OLD | NEW |
---|---|
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 #include "media/mojo/common/media_type_converters.h" | 5 #include "media/mojo/common/media_type_converters.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
316 channel_ptrs[i] = input->data.data() + i * size_per_channel; | 316 channel_ptrs[i] = input->data.data() + i * size_per_channel; |
317 | 317 |
318 return media::AudioBuffer::CopyFrom( | 318 return media::AudioBuffer::CopyFrom( |
319 input->sample_format, input->channel_layout, input->channel_count, | 319 input->sample_format, input->channel_layout, input->channel_count, |
320 input->sample_rate, input->frame_count, &channel_ptrs[0], | 320 input->sample_rate, input->frame_count, &channel_ptrs[0], |
321 input->timestamp); | 321 input->timestamp); |
322 } | 322 } |
323 | 323 |
324 // static | 324 // static |
325 media::mojom::VideoFramePtr | 325 media::mojom::VideoFramePtr |
326 TypeConverter<media::mojom::VideoFramePtr, scoped_refptr<media::VideoFrame>>:: | 326 TypeConverter<media::mojom::VideoFramePtr, scoped_refptr<media::VideoFrame>>:: |
nasko
2017/02/16 21:37:29
In general, please avoid using type converters and
sandersd (OOO until July 31)
2017/02/25 01:19:38
Yes, this in a slowly ongoing conversion for the m
nasko
2017/03/01 19:48:47
Is there a bug tracking that?
| |
327 Convert(const scoped_refptr<media::VideoFrame>& input) { | 327 Convert(const scoped_refptr<media::VideoFrame>& input) { |
328 media::mojom::VideoFramePtr frame(media::mojom::VideoFrame::New()); | 328 media::mojom::VideoFramePtr frame(media::mojom::VideoFrame::New()); |
329 frame->end_of_stream = | 329 frame->end_of_stream = |
330 input->metadata()->IsTrue(media::VideoFrameMetadata::END_OF_STREAM); | 330 input->metadata()->IsTrue(media::VideoFrameMetadata::END_OF_STREAM); |
331 if (frame->end_of_stream) | 331 if (frame->end_of_stream) |
332 return frame; | 332 return frame; |
333 | 333 |
334 // Handle non EOS frame. It must be a MojoSharedBufferVideoFrame. | 334 // Handle non EOS frame. It must be a MojoSharedBufferVideoFrame. |
335 // TODO(jrummell): Support other types of VideoFrame. | 335 // TODO(jrummell): Support other types of VideoFrame. |
336 CHECK_EQ(media::VideoFrame::STORAGE_MOJO_SHARED_BUFFER, | 336 CHECK_EQ(media::VideoFrame::STORAGE_MOJO_SHARED_BUFFER, |
337 input->storage_type()); | 337 input->storage_type()); |
338 media::MojoSharedBufferVideoFrame* input_frame = | 338 media::MojoSharedBufferVideoFrame* input_frame = |
339 static_cast<media::MojoSharedBufferVideoFrame*>(input.get()); | 339 static_cast<media::MojoSharedBufferVideoFrame*>(input.get()); |
340 mojo::ScopedSharedBufferHandle duplicated_handle = | 340 mojo::ScopedSharedBufferHandle duplicated_handle = |
341 input_frame->Handle().Clone(); | 341 input_frame->Handle().Clone(); |
342 CHECK(duplicated_handle.is_valid()); | 342 CHECK(duplicated_handle.is_valid()); |
343 | 343 |
344 frame->format = input->format(); | 344 frame->format = input->format(); |
345 frame->coded_size = input->coded_size(); | 345 frame->coded_size = input->coded_size(); |
346 frame->visible_rect = input->visible_rect(); | 346 frame->visible_rect = input->visible_rect(); |
347 frame->natural_size = input->natural_size(); | 347 frame->natural_size = input->natural_size(); |
348 frame->timestamp = input->timestamp(); | 348 frame->timestamp = input->timestamp(); |
349 frame->frame_data = std::move(duplicated_handle); | 349 |
350 frame->frame_data_size = input_frame->MappedSize(); | 350 media::mojom::SharedBufferVideoFrameDataPtr data = |
351 frame->y_stride = input_frame->stride(media::VideoFrame::kYPlane); | 351 media::mojom::SharedBufferVideoFrameData::New(); |
352 frame->u_stride = input_frame->stride(media::VideoFrame::kUPlane); | 352 data->frame_data = std::move(duplicated_handle); |
353 frame->v_stride = input_frame->stride(media::VideoFrame::kVPlane); | 353 data->frame_data_size = input_frame->MappedSize(); |
354 frame->y_offset = input_frame->PlaneOffset(media::VideoFrame::kYPlane); | 354 data->y_stride = input_frame->stride(media::VideoFrame::kYPlane); |
355 frame->u_offset = input_frame->PlaneOffset(media::VideoFrame::kUPlane); | 355 data->u_stride = input_frame->stride(media::VideoFrame::kUPlane); |
356 frame->v_offset = input_frame->PlaneOffset(media::VideoFrame::kVPlane); | 356 data->v_stride = input_frame->stride(media::VideoFrame::kVPlane); |
357 data->y_offset = input_frame->PlaneOffset(media::VideoFrame::kYPlane); | |
358 data->u_offset = input_frame->PlaneOffset(media::VideoFrame::kUPlane); | |
359 data->v_offset = input_frame->PlaneOffset(media::VideoFrame::kVPlane); | |
360 | |
361 frame->data = media::mojom::VideoFrameData::New(); | |
362 frame->data->set_shared_buffer_data(std::move(data)); | |
357 return frame; | 363 return frame; |
358 } | 364 } |
359 | 365 |
360 // static | 366 // static |
361 scoped_refptr<media::VideoFrame> | 367 scoped_refptr<media::VideoFrame> |
362 TypeConverter<scoped_refptr<media::VideoFrame>, media::mojom::VideoFramePtr>:: | 368 TypeConverter<scoped_refptr<media::VideoFrame>, media::mojom::VideoFramePtr>:: |
363 Convert(const media::mojom::VideoFramePtr& input) { | 369 Convert(const media::mojom::VideoFramePtr& input) { |
364 if (input->end_of_stream) | 370 if (input->end_of_stream) |
365 return media::VideoFrame::CreateEOSFrame(); | 371 return media::VideoFrame::CreateEOSFrame(); |
366 | 372 |
373 // Handle non EOS frame. It must be a MojoSharedBufferVideoFrame. | |
374 // TODO(jrummell): Support other types of VideoFrame. | |
375 CHECK(input->data->is_shared_buffer_data()); | |
nasko
2017/02/16 21:37:29
You should not be using CHECK in here, as the data
sandersd (OOO until July 31)
2017/02/25 01:19:38
Done.
| |
376 const media::mojom::SharedBufferVideoFrameDataPtr& data = | |
377 input->data->get_shared_buffer_data(); | |
378 | |
367 return media::MojoSharedBufferVideoFrame::Create( | 379 return media::MojoSharedBufferVideoFrame::Create( |
368 input->format, input->coded_size, input->visible_rect, | 380 input->format, input->coded_size, input->visible_rect, |
369 input->natural_size, std::move(input->frame_data), | 381 input->natural_size, std::move(data->frame_data), |
370 base::saturated_cast<size_t>(input->frame_data_size), | 382 base::saturated_cast<size_t>(data->frame_data_size), |
371 base::saturated_cast<size_t>(input->y_offset), | 383 base::saturated_cast<size_t>(data->y_offset), |
372 base::saturated_cast<size_t>(input->u_offset), | 384 base::saturated_cast<size_t>(data->u_offset), |
373 base::saturated_cast<size_t>(input->v_offset), input->y_stride, | 385 base::saturated_cast<size_t>(data->v_offset), data->y_stride, |
374 input->u_stride, input->v_stride, input->timestamp); | 386 data->u_stride, data->v_stride, input->timestamp); |
375 } | 387 } |
376 | 388 |
377 } // namespace mojo | 389 } // namespace mojo |
OLD | NEW |