| Index: media/formats/mp2t/es_parser_h264.h
|
| diff --git a/media/formats/mp2t/es_parser_h264.h b/media/formats/mp2t/es_parser_h264.h
|
| index df09c88689f17b050c9ae3adaa1e68bab951afb0..dd9184d14207e8399248364b3efbeef30dfe9180 100644
|
| --- a/media/formats/mp2t/es_parser_h264.h
|
| +++ b/media/formats/mp2t/es_parser_h264.h
|
| @@ -27,10 +27,14 @@ class OffsetByteQueue;
|
| namespace media {
|
| namespace mp2t {
|
|
|
| -// Remark:
|
| -// In this h264 parser, frame splitting is based on AUD nals.
|
| +// A few remarks:
|
| +// - In this h264 parser, frame splitting is based on AUD nals.
|
| // Mpeg2 TS spec: "2.14 Carriage of Rec. ITU-T H.264 | ISO/IEC 14496-10 video"
|
| // "Each AVC access unit shall contain an access unit delimiter NAL Unit;"
|
| +// - PES packets do not necessarily map to an H264 access unit although the HLS
|
| +// recommendation is to use one PES for each access unit. In this parser,
|
| +// we handle the general case and do not make any assumption about the access
|
| +// unit organization within PES packets.
|
| //
|
| class MEDIA_EXPORT EsParserH264 : public EsParser {
|
| public:
|
| @@ -41,17 +45,12 @@ class MEDIA_EXPORT EsParserH264 : public EsParser {
|
| virtual ~EsParserH264();
|
|
|
| // EsParser implementation.
|
| - virtual bool Parse(const uint8* buf, int size,
|
| - base::TimeDelta pts,
|
| - DecodeTimestamp dts) OVERRIDE;
|
| virtual void Flush() OVERRIDE;
|
| - virtual void Reset() OVERRIDE;
|
|
|
| private:
|
| - struct TimingDesc {
|
| - DecodeTimestamp dts;
|
| - base::TimeDelta pts;
|
| - };
|
| + // EsParser implementation.
|
| + virtual bool ParseFromEsQueue() OVERRIDE;
|
| + virtual void ResetInternal() OVERRIDE;
|
|
|
| // Find the AUD located at or after |*stream_pos|.
|
| // Return true if an AUD is found.
|
| @@ -60,10 +59,6 @@ class MEDIA_EXPORT EsParserH264 : public EsParser {
|
| // of the start code parser.
|
| bool FindAUD(int64* stream_pos);
|
|
|
| - // Resumes the H264 ES parsing.
|
| - // Return true if successful.
|
| - bool ParseInternal();
|
| -
|
| // Emit a frame whose position in the ES queue starts at |access_unit_pos|.
|
| // Returns true if successful, false if no PTS is available for the frame.
|
| bool EmitFrame(int64 access_unit_pos, int access_unit_size,
|
| @@ -75,10 +70,6 @@ class MEDIA_EXPORT EsParserH264 : public EsParser {
|
|
|
| EsAdapterVideo es_adapter_;
|
|
|
| - // Bytes of the ES stream that have not been emitted yet.
|
| - scoped_ptr<media::OffsetByteQueue> es_queue_;
|
| - std::list<std::pair<int64, TimingDesc> > timing_desc_list_;
|
| -
|
| // H264 parser state.
|
| // - |current_access_unit_pos_| is pointing to an annexB syncword
|
| // representing the first NALU of an H264 access unit.
|
|
|