Chromium Code Reviews| Index: media/cast/transport/cast_transport_config.h |
| diff --git a/media/cast/transport/cast_transport_config.h b/media/cast/transport/cast_transport_config.h |
| index 283b5341935cdc82314aba4accb339120fc75807..25c516434ce93c2b13282ab077741632da0a2db9 100644 |
| --- a/media/cast/transport/cast_transport_config.h |
| +++ b/media/cast/transport/cast_transport_config.h |
| @@ -12,6 +12,7 @@ |
| #include "base/callback.h" |
| #include "base/memory/linked_ptr.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/stl_util.h" |
| #include "media/cast/transport/cast_transport_defines.h" |
| #include "net/base/ip_endpoint.h" |
| @@ -69,27 +70,46 @@ struct CastTransportVideoConfig { |
| VideoCodec codec; |
| }; |
| -struct EncodedVideoFrame { |
| - EncodedVideoFrame(); |
| - ~EncodedVideoFrame(); |
| - |
| - VideoCodec codec; |
| - bool key_frame; |
| +// A combination of metadata and data for one encoded frame. This can contain |
| +// audio data or video data or other. |
| +struct EncodedFrame { |
| + EncodedFrame(); |
| + ~EncodedFrame(); |
| + |
| + // Convenience accessors to data as an array of uint8 elements. |
| + const uint8* bytes() const { |
| + return reinterpret_cast<uint8*>(string_as_array( |
| + const_cast<std::string*>(&data))); |
| + } |
| + uint8* mutable_bytes() { |
| + return reinterpret_cast<uint8*>(string_as_array(&data)); |
| + } |
| + |
| + // The label associated with this frame. Implies an ordering relative to |
| + // other frames in the same stream. |
| uint32 frame_id; |
| - uint32 last_referenced_frame_id; |
| - uint32 rtp_timestamp; |
| - std::string data; |
| -}; |
| -struct EncodedAudioFrame { |
| - EncodedAudioFrame(); |
| - ~EncodedAudioFrame(); |
| + // The label associated with the frame upon which this frame is based. If |
| + // this frame does not require any other frame in order to become decodable |
| + // (e.g., key frames), |base_frame_id| must equal |frame_id|. |
| + uint32 base_frame_id; |
|
Alpha Left Google
2014/05/15 22:11:23
I actually prefer the name before, i.e. referenced
miu
2014/05/16 04:27:25
Done. After looking around more in the codec APIs
|
| - AudioCodec codec; |
| - uint32 frame_id; // Needed to release the frame. |
| + // The stream timestamp, on the timeline of the signal data. For example, RTP |
| + // timestamps for audio are usually defined as the total number of audio |
| + // samples encoded in all prior frames. A playback system uses this value to |
| + // detect gaps in the stream, and otherwise stretch the signal to match |
| + // playout targets. |
| uint32 rtp_timestamp; |
| - // Support for max sampling rate of 48KHz, 2 channels, 100 ms duration. |
| - static const int kMaxNumberOfSamples = 48 * 2 * 100; |
| + |
| + // Reference time used for synchronization between streams. In the sender |
|
Alpha Left Google
2014/05/15 22:11:23
In the sender the time is not used for synchroniza
miu
2014/05/16 04:27:25
I've clarified the comment (that the sender genera
|
| + // implementation, this is the frame capture time. In the receiver |
| + // implementation, this is the target playout time. Over a sequence of |
| + // frames, this time value is expected to drift with respect to the elapsed |
| + // time implied by the RTP timestamps; and it may not necessarily increment |
| + // with precise regularity. |
| + base::TimeTicks reference_time; |
|
Alpha Left Google
2014/05/15 22:11:23
Calling it reference_time doesn't seem to fit eith
miu
2014/05/16 04:27:25
This is exactly the terminology used in Chapter 7
|
| + |
| + // The encoded signal data. |
| std::string data; |
| }; |