Chromium Code Reviews| Index: media/filters/ffmpeg_demuxer.cc |
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
| index 56929bcf05172823e0aab9b2ba7d8fe64e4c81b2..257d4aa8ea9094447646a2f2cdd6cb9c91065f3a 100644 |
| --- a/media/filters/ffmpeg_demuxer.cc |
| +++ b/media/filters/ffmpeg_demuxer.cc |
| @@ -27,6 +27,10 @@ |
| #include "media/filters/ffmpeg_glue.h" |
| #include "media/filters/ffmpeg_h264_to_annex_b_bitstream_converter.h" |
| +extern "C" { |
| +#include "third_party/ffmpeg/libavcodec/avcodec.h" |
|
scherkus (not reviewing)
2013/02/22 23:18:01
this include should go inside ffmpeg_common.h
vignesh
2013/02/25 21:51:42
Done.
|
| +} |
| + |
| namespace media { |
| // |
| @@ -70,6 +74,11 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( |
| } |
| void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { |
| + |
|
scherkus (not reviewing)
2013/02/22 23:18:01
remove extra blank line
vignesh
2013/02/25 21:51:42
Done.
|
| + uint8_t* side_data; |
| + int side_data_size = 0; |
| + AVPacket* pkt; |
| + |
| DCHECK(message_loop_->BelongsToCurrentThread()); |
| if (stopped_ || end_of_stream_) { |
| @@ -83,11 +92,21 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { |
| LOG(ERROR) << "Format conversion failed."; |
| } |
| + // Get the alpha data if any |
|
scherkus (not reviewing)
2013/02/22 23:18:01
nit: I'm sure side data is used for more than just
vignesh
2013/02/25 21:51:42
Done.
|
| + pkt = packet.get(); |
| + av_packet_split_side_data(pkt); |
| + side_data = av_packet_get_side_data(pkt, |
| + AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, |
| + &side_data_size); |
| + |
| // If a packet is returned by FFmpeg's av_parser_parse2() the packet will |
| // reference inner memory of FFmpeg. As such we should transfer the packet |
| // into memory we control. |
| scoped_refptr<DecoderBuffer> buffer; |
| - buffer = DecoderBuffer::CopyFrom(packet->data, packet->size); |
| + buffer = DecoderBuffer::CopyFrom(pkt->data, pkt->size); |
| + if (side_data_size) { |
| + buffer->SetSideData(side_data, side_data_size); |
| + } |
| buffer->SetTimestamp(ConvertStreamTimestamp( |
| stream_->time_base, packet->pts)); |
| buffer->SetDuration(ConvertStreamTimestamp( |