Commit 163b0875 by xiongziliang

修复h264 split后可能多个字节的bug

parent 7565a206
...@@ -50,6 +50,9 @@ void splitH264(const char *ptr, int len, const std::function<void(const char *, ...@@ -50,6 +50,9 @@ void splitH264(const char *ptr, int len, const std::function<void(const char *,
while(true) { while(true) {
auto next_nal = memfind(nal + 3,end - nal - 3,"\x0\x0\x1",3); auto next_nal = memfind(nal + 3,end - nal - 3,"\x0\x0\x1",3);
if(next_nal){ if(next_nal){
if(*(next_nal - 1) == 0x00){
next_nal -= 1;
}
cb(nal,next_nal - nal); cb(nal,next_nal - nal);
nal = next_nal; nal = next_nal;
continue; continue;
...@@ -59,6 +62,18 @@ void splitH264(const char *ptr, int len, const std::function<void(const char *, ...@@ -59,6 +62,18 @@ void splitH264(const char *ptr, int len, const std::function<void(const char *,
} }
} }
#if 0
//splitH264函数测试程序
static onceToken s_token([](){
char buf[] = "\x00\x00\x00\x01\x12\x23\x34\x45\x56"
"\x00\x00\x00\x01\x12\x23\x34\x45\x56"
"\x00\x00\x00\x01\x12\x23\x34\x45\x56"
"\x00\x00\x01\x12\x23\x34\x45\x56";
splitH264(buf, sizeof(buf) - 1, [](const char *ptr, int len){
cout << hexdump(ptr, len) << endl;
});
});
#endif //0
Sdp::Ptr H264Track::getSdp() { Sdp::Ptr H264Track::getSdp() {
if(!ready()){ if(!ready()){
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论