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

Unified Diff: content/common/gpu/media/vt_video_encode_accelerator_mac.h

Issue 1801343002: Revert of H264 HW encode using VideoToolbox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: content/common/gpu/media/vt_video_encode_accelerator_mac.h
diff --git a/content/common/gpu/media/vt_video_encode_accelerator_mac.h b/content/common/gpu/media/vt_video_encode_accelerator_mac.h
deleted file mode 100644
index aa4b37ed22d0035c1e1ac6d2d7c5920b1a0ea826..0000000000000000000000000000000000000000
--- a/content/common/gpu/media/vt_video_encode_accelerator_mac.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_COMMON_GPU_MEDIA_VT_VIDEO_ENCODE_ACCELERATOR_MAC_H_
-#define CONTENT_COMMON_GPU_MEDIA_VT_VIDEO_ENCODE_ACCELERATOR_MAC_H_
-
-#include "base/mac/scoped_cftyperef.h"
-#include "content/common/content_export.h"
-#include "media/base/mac/videotoolbox_glue.h"
-#include "media/base/mac/videotoolbox_helpers.h"
-#include "media/video/video_encode_accelerator.h"
-
-namespace content {
-
-// VideoToolbox.framework implementation of the VideoEncodeAccelerator
-// interface for MacOSX. VideoToolbox makes no guarantees that it is thread
-// safe, so this object is pinned to the thread on which it is constructed.
-class CONTENT_EXPORT VTVideoEncodeAccelerator
- : public media::VideoEncodeAccelerator {
- public:
- VTVideoEncodeAccelerator();
- ~VTVideoEncodeAccelerator() override;
-
- // media::VideoEncodeAccelerator implementation.
- media::VideoEncodeAccelerator::SupportedProfiles GetSupportedProfiles()
- override;
- bool Initialize(media::VideoPixelFormat format,
- const gfx::Size& input_visible_size,
- media::VideoCodecProfile output_profile,
- uint32_t initial_bitrate,
- Client* client) override;
- void Encode(const scoped_refptr<media::VideoFrame>& frame,
- bool force_keyframe) override;
- void UseOutputBitstreamBuffer(const media::BitstreamBuffer& buffer) override;
- void RequestEncodingParametersChange(uint32_t bitrate,
- uint32_t framerate) override;
- void Destroy() override;
-
- private:
- using CMSampleBufferRef = CoreMediaGlue::CMSampleBufferRef;
- using VTCompressionSessionRef = VideoToolboxGlue::VTCompressionSessionRef;
- using VTEncodeInfoFlags = VideoToolboxGlue::VTEncodeInfoFlags;
-
- // Holds the associated data of a video frame being processed.
- struct InProgressFrameEncode;
-
- // Holds output buffers coming from the encoder.
- struct EncodeOutput;
-
- // Holds output buffers coming from the client ready to be filled.
- struct BitstreamBufferRef;
-
- // Encoding tasks to be run on |encoder_thread_|.
- void EncodeTask(const scoped_refptr<media::VideoFrame>& frame,
- bool force_keyframe);
- void UseOutputBitstreamBufferTask(scoped_ptr<BitstreamBufferRef> buffer_ref);
- void RequestEncodingParametersChangeTask(uint32_t bitrate,
- uint32_t framerate);
- void DestroyTask();
-
- // Helper function to notify the client of an error on |client_task_runner_|.
- void NotifyError(media::VideoEncodeAccelerator::Error error);
-
- // Compression session callback function to handle compressed frames.
- static void CompressionCallback(void* encoder_opaque,
- void* request_opaque,
- OSStatus status,
- VTEncodeInfoFlags info,
- CMSampleBufferRef sbuf);
- void CompressionCallbackTask(OSStatus status,
- scoped_ptr<EncodeOutput> encode_output);
-
- // Copy CMSampleBuffer into a BitstreamBuffer and return it to the |client_|.
- void ReturnBitstreamBuffer(
- scoped_ptr<EncodeOutput> encode_output,
- scoped_ptr<VTVideoEncodeAccelerator::BitstreamBufferRef> buffer_ref);
-
- // Reset the encoder's compression session by destroying the existing one
- // using DestroyCompressionSession() and creating a new one. The new session
- // is configured using ConfigureCompressionSession().
- bool ResetCompressionSession();
-
- // Create a compression session, with HW encoder enforced if
- // |require_hw_encoding| is set.
- bool CreateCompressionSession(
- base::ScopedCFTypeRef<CFDictionaryRef> attributes,
- const gfx::Size& input_size,
- bool require_hw_encoding);
-
- // Configure the current compression session using current encoder settings.
- bool ConfigureCompressionSession();
-
- // Destroy the current compression session if any. Blocks until all pending
- // frames have been flushed out (similar to EmitFrames without doing any
- // encoding work).
- void DestroyCompressionSession();
-
- // VideoToolboxGlue provides access to VideoToolbox at runtime.
- const VideoToolboxGlue* videotoolbox_glue_;
- base::ScopedCFTypeRef<VTCompressionSessionRef> compression_session_;
-
- gfx::Size input_visible_size_;
- size_t bitstream_buffer_size_;
- int32_t frame_rate_;
- int32_t target_bitrate_;
-
- // Bitstream buffers ready to be used to return encoded output as a FIFO.
- std::deque<scoped_ptr<BitstreamBufferRef>> bitstream_buffer_queue_;
-
- // EncodeOutput needs to be copied into a BitstreamBufferRef as a FIFO.
- std::deque<scoped_ptr<EncodeOutput>> encoder_output_queue_;
-
- // Our original calling task runner for the child thread.
- const scoped_refptr<base::SingleThreadTaskRunner> client_task_runner_;
-
- // To expose client callbacks from VideoEncodeAccelerator.
- // NOTE: all calls to this object *MUST* be executed on
- // |client_task_runner_|.
- base::WeakPtr<Client> client_;
- scoped_ptr<base::WeakPtrFactory<Client> > client_ptr_factory_;
-
- // Thread checker to enforce that this object is used on a specific thread.
- // It is pinned on |client_task_runner_| thread.
- base::ThreadChecker thread_checker_;
-
- // This thread services tasks posted from the VEA API entry points by the
- // GPU child thread and CompressionCallback() posted from device thread.
- base::Thread encoder_thread_;
- scoped_refptr<base::SingleThreadTaskRunner> encoder_thread_task_runner_;
-
- // Declared last to ensure that all weak pointers are invalidated before
- // other destructors run.
- base::WeakPtr<VTVideoEncodeAccelerator> encoder_weak_ptr_;
- base::WeakPtrFactory<VTVideoEncodeAccelerator> encoder_task_weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(VTVideoEncodeAccelerator);
-};
-
-} // namespace content
-
-#endif // CONTENT_COMMON_GPU_MEDIA_VT_VIDEO_ENCODE_ACCELERATOR_MAC_H_

Powered by Google App Engine
This is Rietveld 408576698