Add H.264 packetization.
This also includes: - Creating new packetizer and depacketizer interfaces. - Moved VP8 packetization was H264 packetization and depacketization to these interfaces. This is a work in progress and should be continued to get this 100% generic. This also required changing the return type for RtpFormatVp8::NextPacket(), which now returns bool instead of the index of the first partition. - Created a Create() factory method for packetizers and depacketizers. R=niklas.enbom@webrtc.org, pbos@webrtc.org Review URL: https://webrtc-codereview.appspot.com/21009004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6804 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -94,33 +94,44 @@ void VCMPacket::Reset() {
|
||||
memset(&codecSpecificHeader, 0, sizeof(RTPVideoHeader));
|
||||
}
|
||||
|
||||
void VCMPacket::CopyCodecSpecifics(const RTPVideoHeader& videoHeader)
|
||||
{
|
||||
switch(videoHeader.codec)
|
||||
{
|
||||
case kRtpVideoVp8:
|
||||
{
|
||||
// Handle all packets within a frame as depending on the previous packet
|
||||
// TODO(holmer): This should be changed to make fragments independent
|
||||
// when the VP8 RTP receiver supports fragments.
|
||||
if (isFirstPacket && markerBit)
|
||||
completeNALU = kNaluComplete;
|
||||
else if (isFirstPacket)
|
||||
completeNALU = kNaluStart;
|
||||
else if (markerBit)
|
||||
completeNALU = kNaluEnd;
|
||||
else
|
||||
completeNALU = kNaluIncomplete;
|
||||
void VCMPacket::CopyCodecSpecifics(const RTPVideoHeader& videoHeader) {
|
||||
switch (videoHeader.codec) {
|
||||
case kRtpVideoVp8:
|
||||
// Handle all packets within a frame as depending on the previous packet
|
||||
// TODO(holmer): This should be changed to make fragments independent
|
||||
// when the VP8 RTP receiver supports fragments.
|
||||
if (isFirstPacket && markerBit)
|
||||
completeNALU = kNaluComplete;
|
||||
else if (isFirstPacket)
|
||||
completeNALU = kNaluStart;
|
||||
else if (markerBit)
|
||||
completeNALU = kNaluEnd;
|
||||
else
|
||||
completeNALU = kNaluIncomplete;
|
||||
|
||||
codec = kVideoCodecVP8;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
codec = kVideoCodecUnknown;
|
||||
break;
|
||||
}
|
||||
}
|
||||
codec = kVideoCodecVP8;
|
||||
return;
|
||||
case kRtpVideoH264:
|
||||
isFirstPacket = videoHeader.isFirstPacket;
|
||||
if (isFirstPacket)
|
||||
insertStartCode = true;
|
||||
|
||||
if (videoHeader.codecHeader.H264.single_nalu) {
|
||||
completeNALU = kNaluComplete;
|
||||
} else if (isFirstPacket) {
|
||||
completeNALU = kNaluStart;
|
||||
} else if (markerBit) {
|
||||
completeNALU = kNaluEnd;
|
||||
} else {
|
||||
completeNALU = kNaluIncomplete;
|
||||
}
|
||||
codec = kVideoCodecH264;
|
||||
return;
|
||||
case kRtpVideoGeneric:
|
||||
case kRtpVideoNone:
|
||||
codec = kVideoCodecUnknown;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user