1 // Copyright (c) 2012 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 #ifndef MEDIA_BASE_STREAM_PARSER_BUFFER_H_ 6 #define MEDIA_BASE_STREAM_PARSER_BUFFER_H_ 7 8 #include "media/base/decoder_buffer.h" 9 #include "media/base/media_export.h" 10 11 namespace media { 12 13 class MEDIA_EXPORT StreamParserBuffer : public DecoderBuffer { 14 public: 15 // Value used to signal an invalid decoder config ID. 16 enum { kInvalidConfigId = -1 }; 17 18 static scoped_refptr<StreamParserBuffer> CreateEOSBuffer(); 19 static scoped_refptr<StreamParserBuffer> CopyFrom( 20 const uint8* data, int data_size, bool is_keyframe); 21 static scoped_refptr<StreamParserBuffer> CopyFrom( 22 const uint8* data, int data_size, 23 const uint8* side_data, int side_data_size, bool is_keyframe); 24 bool IsKeyframe() const { return is_keyframe_; } 25 26 // Decode timestamp. If not explicitly set, or set to kNoTimestamp(), the 27 // value will be taken from the normal timestamp. 28 base::TimeDelta GetDecodeTimestamp() const; 29 void SetDecodeTimestamp(const base::TimeDelta& timestamp); 30 31 // Gets/sets the ID of the decoder config associated with this 32 // buffer. 33 int GetConfigId() const; 34 void SetConfigId(int config_id); 35 36 private: 37 StreamParserBuffer(const uint8* data, int data_size, 38 const uint8* side_data, int side_data_size, 39 bool is_keyframe); 40 virtual ~StreamParserBuffer(); 41 42 bool is_keyframe_; 43 base::TimeDelta decode_timestamp_; 44 int config_id_; 45 DISALLOW_COPY_AND_ASSIGN(StreamParserBuffer); 46 }; 47 48 } // namespace media 49 50 #endif // MEDIA_BASE_STREAM_PARSER_BUFFER_H_ 51