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

Side by Side Diff: media/base/win/mf_helpers.cc

Issue 2058413003: H264 HW encode using MediaFoundation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/base/win/mf_helpers.h"
6
7 namespace media {
8
9 namespace mf {
10
11 IMFSample* CreateEmptySampleWithBuffer(uint32_t buffer_length, int align) {
12 CHECK_GT(buffer_length, 0U);
13
14 base::win::ScopedComPtr<IMFSample> sample;
15 HRESULT hr = MFCreateSample(sample.Receive());
16 RETURN_ON_HR_FAILURE(hr, "MFCreateSample failed", NULL);
17
18 base::win::ScopedComPtr<IMFMediaBuffer> buffer;
19 if (align == 0) {
20 // Note that MFCreateMemoryBuffer is same as MFCreateAlignedMemoryBuffer
21 // with the align argument being 0.
22 hr = MFCreateMemoryBuffer(buffer_length, buffer.Receive());
23 } else {
24 hr =
25 MFCreateAlignedMemoryBuffer(buffer_length, align - 1, buffer.Receive());
26 }
27 RETURN_ON_HR_FAILURE(hr, "Failed to create memory buffer for sample", NULL);
28
29 hr = sample->AddBuffer(buffer.get());
30 RETURN_ON_HR_FAILURE(hr, "Failed to add buffer to sample", NULL);
31
32 buffer->SetCurrentLength(0);
33 return sample.Detach();
34 }
35
36 MediaBufferScopedPointer::MediaBufferScopedPointer(IMFMediaBuffer* media_buffer)
37 : media_buffer_(media_buffer),
38 buffer_(nullptr),
39 max_length_(0),
40 current_length_(0) {
41 HRESULT hr = media_buffer_->Lock(&buffer_, &max_length_, &current_length_);
42 CHECK(SUCCEEDED(hr));
43 }
44
45 MediaBufferScopedPointer::~MediaBufferScopedPointer() {
46 HRESULT hr = media_buffer_->Unlock();
47 CHECK(SUCCEEDED(hr));
48 }
49
50 } // namespace mf
51
52 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698