Index: media/formats/mp2t/es_parser_h264.cc |
diff --git a/media/formats/mp2t/es_parser_h264.cc b/media/formats/mp2t/es_parser_h264.cc |
index 691678ce81ebd49fb9b3a099c306de3412f11e99..f2c166cf8cc6e632c9c06d254e8b90daae747925 100644 |
--- a/media/formats/mp2t/es_parser_h264.cc |
+++ b/media/formats/mp2t/es_parser_h264.cc |
@@ -12,6 +12,7 @@ |
#include "media/base/video_frame.h" |
#include "media/filters/h264_parser.h" |
#include "media/formats/common/offset_byte_queue.h" |
+#include "media/formats/mp2t/es_adapter_video.h" |
#include "media/formats/mp2t/mp2t_common.h" |
#include "ui/gfx/rect.h" |
#include "ui/gfx/size.h" |
@@ -26,12 +27,11 @@ const int kMinAUDSize = 4; |
EsParserH264::EsParserH264( |
const NewVideoConfigCB& new_video_config_cb, |
const EmitBufferCB& emit_buffer_cb) |
- : new_video_config_cb_(new_video_config_cb), |
- emit_buffer_cb_(emit_buffer_cb), |
- es_queue_(new media::OffsetByteQueue()), |
- h264_parser_(new H264Parser()), |
- current_access_unit_pos_(0), |
- next_access_unit_pos_(0) { |
+ : es_adapter_(new_video_config_cb, emit_buffer_cb), |
+ es_queue_(new media::OffsetByteQueue()), |
+ h264_parser_(new H264Parser()), |
+ current_access_unit_pos_(0), |
+ next_access_unit_pos_(0) { |
} |
EsParserH264::~EsParserH264() { |
@@ -75,6 +75,8 @@ void EsParserH264::Flush() { |
uint8 aud[] = { 0x00, 0x00, 0x01, 0x09 }; |
es_queue_->Push(aud, sizeof(aud)); |
ParseInternal(); |
+ |
+ es_adapter_.Flush(); |
} |
void EsParserH264::Reset() { |
@@ -85,6 +87,7 @@ void EsParserH264::Reset() { |
next_access_unit_pos_ = 0; |
timing_desc_list_.clear(); |
last_video_decoder_config_ = VideoDecoderConfig(); |
+ es_adapter_.Reset(); |
} |
bool EsParserH264::FindAUD(int64* stream_pos) { |
@@ -273,7 +276,7 @@ bool EsParserH264::EmitFrame(int64 access_unit_pos, int access_unit_size, |
0); |
stream_parser_buffer->SetDecodeTimestamp(current_timing_desc.dts); |
stream_parser_buffer->set_timestamp(current_timing_desc.pts); |
- emit_buffer_cb_.Run(stream_parser_buffer); |
+ es_adapter_.OnNewBuffer(stream_parser_buffer); |
return true; |
} |
@@ -321,7 +324,7 @@ bool EsParserH264::UpdateVideoDecoderConfig(const H264SPS* sps) { |
DVLOG(1) << "SAR: width=" << sps->sar_width |
<< " height=" << sps->sar_height; |
last_video_decoder_config_ = video_decoder_config; |
- new_video_config_cb_.Run(video_decoder_config); |
+ es_adapter_.OnConfigChanged(video_decoder_config); |
} |
return true; |