Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: content/common/gpu/media/v4l2_video_encode_accelerator.h

Issue 813693006: Add accelerated video decoder interface, VP8 and H.264 implementations and hook up to V4L2SVDA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_ 5 #ifndef CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_
6 #define CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_ 6 #define CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_
7 7
8 #include <linux/videodev2.h> 8 #include <linux/videodev2.h>
9 #include <list> 9 #include <list>
10 #include <vector> 10 #include <vector>
(...skipping 24 matching lines...) Expand all
35 // This class handles video encode acceleration by interfacing with a V4L2 35 // This class handles video encode acceleration by interfacing with a V4L2
36 // device exposed by the codec hardware driver. The threading model of this 36 // device exposed by the codec hardware driver. The threading model of this
37 // class is the same as in the V4L2VideoDecodeAccelerator (from which class this 37 // class is the same as in the V4L2VideoDecodeAccelerator (from which class this
38 // was designed). 38 // was designed).
39 // This class may try to instantiate and use a V4L2ImageProcessor for input 39 // This class may try to instantiate and use a V4L2ImageProcessor for input
40 // format conversion, if the input format requested via Initialize() is not 40 // format conversion, if the input format requested via Initialize() is not
41 // accepted by the hardware codec. 41 // accepted by the hardware codec.
42 class CONTENT_EXPORT V4L2VideoEncodeAccelerator 42 class CONTENT_EXPORT V4L2VideoEncodeAccelerator
43 : public media::VideoEncodeAccelerator { 43 : public media::VideoEncodeAccelerator {
44 public: 44 public:
45 explicit V4L2VideoEncodeAccelerator(scoped_ptr<V4L2Device> device); 45 explicit V4L2VideoEncodeAccelerator(const scoped_refptr<V4L2Device>& device);
46 virtual ~V4L2VideoEncodeAccelerator(); 46 virtual ~V4L2VideoEncodeAccelerator();
47 47
48 // media::VideoEncodeAccelerator implementation. 48 // media::VideoEncodeAccelerator implementation.
49 virtual std::vector<media::VideoEncodeAccelerator::SupportedProfile> 49 virtual std::vector<media::VideoEncodeAccelerator::SupportedProfile>
50 GetSupportedProfiles() override; 50 GetSupportedProfiles() override;
51 virtual bool Initialize(media::VideoFrame::Format format, 51 virtual bool Initialize(media::VideoFrame::Format format,
52 const gfx::Size& input_visible_size, 52 const gfx::Size& input_visible_size,
53 media::VideoCodecProfile output_profile, 53 media::VideoCodecProfile output_profile,
54 uint32 initial_bitrate, 54 uint32 initial_bitrate,
55 Client* client) override; 55 Client* client) override;
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 217
218 // We need to provide the stream header with every keyframe, to allow 218 // We need to provide the stream header with every keyframe, to allow
219 // midstream decoding restarts. Store it here. 219 // midstream decoding restarts. Store it here.
220 scoped_ptr<uint8[]> stream_header_; 220 scoped_ptr<uint8[]> stream_header_;
221 size_t stream_header_size_; 221 size_t stream_header_size_;
222 222
223 // Video frames ready to be encoded. 223 // Video frames ready to be encoded.
224 std::list<scoped_refptr<media::VideoFrame> > encoder_input_queue_; 224 std::list<scoped_refptr<media::VideoFrame> > encoder_input_queue_;
225 225
226 // Encoder device. 226 // Encoder device.
227 scoped_ptr<V4L2Device> device_; 227 scoped_refptr<V4L2Device> device_;
228 228
229 // Input queue state. 229 // Input queue state.
230 bool input_streamon_; 230 bool input_streamon_;
231 // Input buffers enqueued to device. 231 // Input buffers enqueued to device.
232 int input_buffer_queued_count_; 232 int input_buffer_queued_count_;
233 // Input buffers ready to use; LIFO since we don't care about ordering. 233 // Input buffers ready to use; LIFO since we don't care about ordering.
234 std::vector<int> free_input_buffers_; 234 std::vector<int> free_input_buffers_;
235 // Mapping of int index to input buffer record. 235 // Mapping of int index to input buffer record.
236 std::vector<InputRecord> input_buffer_map_; 236 std::vector<InputRecord> input_buffer_map_;
237 enum v4l2_memory input_memory_type_; 237 enum v4l2_memory input_memory_type_;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 // as both threads will not outlive this object. 272 // as both threads will not outlive this object.
273 base::WeakPtr<V4L2VideoEncodeAccelerator> weak_this_; 273 base::WeakPtr<V4L2VideoEncodeAccelerator> weak_this_;
274 base::WeakPtrFactory<V4L2VideoEncodeAccelerator> weak_this_ptr_factory_; 274 base::WeakPtrFactory<V4L2VideoEncodeAccelerator> weak_this_ptr_factory_;
275 275
276 DISALLOW_COPY_AND_ASSIGN(V4L2VideoEncodeAccelerator); 276 DISALLOW_COPY_AND_ASSIGN(V4L2VideoEncodeAccelerator);
277 }; 277 };
278 278
279 } // namespace content 279 } // namespace content
280 280
281 #endif // CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_ 281 #endif // CONTENT_COMMON_GPU_MEDIA_V4L2_VIDEO_ENCODE_ACCELERATOR_H_
OLDNEW
« no previous file with comments | « content/common/gpu/media/v4l2_video_device.cc ('k') | content/common/gpu/media/v4l2_video_encode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698