[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] mp4/payload h264pyld.cpp,1.23,1.23.28.1
From: yichen () helixcommunity ! org
Date: 2013-09-05 9:18:25
[Download RAW message or body]
Update of /cvsroot/datatype/mp4/payload
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv11935
Modified Files:
Tag: SERVER_15_1_0
h264pyld.cpp
Log Message:
Synopsis:
=========
CR:[DASH][RTP][High Bit-rate] Push 15Mbps RTP ingress to server, the DASH segments \
can't be segmented
Actual:
1. Mostly, the DASH segments can not be segmented, so the DASH playback can not be \
started, and the log will record:
WARNING:16-Aug-2013 13:48:41.580 tmplgpln(7563): RTPLive/28: 15.sdp: Live session is \
invalid or has excessive A/V sync drift. Current stream No 0: queue size: 801, queue \
depth: 500. State: BUFFERING
2. Sometimes, the DASH segments can be segmented, but the quality of DASH playback is \
very bad(not smooth and have a lot of mosaic), the size of m4s file is very \
uniformity( such as 1.m4s is 6000KB, 2.m4s is 12000KB), and this is one of the few \
cases.
Expected: High bit-rate RTP ingress DASH playback is well.
Code Build Found In: servproxyall-130808-155 and v15.0
The root cause is that, when h264PayloadFormat depacktize the incoming stream, It \
will get codec profile id from "FMTPprofile-level-id", But for RTP, this filed is a \
type of ULONG, but it assume the type of this field is string, which cause server \
send a wrong profile id to player that cause the player fail.
My solution is get the profile ID as ULONG.
Files affected
=====================
datatype/mp4/payload/h264pyld.cpp
Test perform
=================
Ingess a 15M rtp stream to server.
Sample player can play the feed normally
Dash can segment normally and client can play normally
Integration Tests:
None
Leak Tests: None
Performance Tests: N/A
Platforms Tested: win-x86_64-vc10.
Builds Verified: win-x86_64-vc10.
QA Hints
========
None.
Index: h264pyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/h264pyld.cpp,v
retrieving revision 1.23
retrieving revision 1.23.28.1
diff -u -d -r1.23 -r1.23.28.1
--- h264pyld.cpp 3 Nov 2011 16:00:02 -0000 1.23
+++ h264pyld.cpp 5 Sep 2013 09:18:17 -0000 1.23.28.1
@@ -505,6 +505,7 @@
IHXBuffer* pSpropParameterSets = NULL;
UINT32 offset = 0;
CNALUnit *pNALUnit = NULL;
+ UINT32 ulProfileLevelID = 0;
UINT32 ulConfigBuffSize = AVC_DECODER_CONFIGURATION_RECORD_HEADER_SIZE;
UCHAR tmp[2];
@@ -519,6 +520,18 @@
(char*)pProfileLevelIDString->GetBuffer());
}
+ else
+ {
+ char buf[64] = {0};
+ retVal = HXR_FAIL;
+ pHeader->GetPropertyULONG32("FMTPprofile-level-id", ulProfileLevelID);
+ if (ulProfileLevelID != 0)
+ {
+ sprintf(buf, "%d", ulProfileLevelID);
+ retVal = HexStringToBinary(profileLevelID, buf);
+ }
+ }
+
if(retVal != HXR_OK)
{
profileLevelID[0] = 0x42;
_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic