資源簡介
h264_JM源碼
代碼片段和文件信息
/*!
?*************************************************************************************
?*?\file?annexb.c
?*
?*?\brief
?*????Annex?B?Byte?Stream?format
?*
?*?\author
?*????Main?contributors?(see?contributors.h?for?copyright?address?and?affiliation?details)
?*??????-?Stephan?Wenger??????????????????
?*************************************************************************************
?*/
#include?
#include?
#include?“global.h“
#include?“annexb.h“
#include?“memalloc.h“
FILE?*bits?=?NULL;????????????????//!static?int?FindStartCode?(unsigned?char?*Buf?int?zeros_in_startcode);
/*!
?************************************************************************
?*?\brief
?*????Returns?the?size?of?the?NALU?(bits?between?start?codes?in?case?of
?*????Annex?B.??nalu->buf?and?nalu->len?are?filled.??Other?field?in
?*????nalu->?remain?uninitialized?(will?be?taken?care?of?by?NALUtoRBSP.
?*
?*?\return
?*?????0?if?there?is?nothing?any?more?to?read?(EOF)
?*????-1?in?case?of?any?error
?*
?*??\note?Side-effect:?Returns?length?of?start-code?in?bytes.?
?*
?*?\note
?*???GetAnnexbNALU?expects?start?codes?at?byte?aligned?positions?in?the?file
?*
?************************************************************************
?*/
int?GetAnnexbNALU?(NALU_t?*nalu)
{
??int?info2?info3?pos?=?0;
??int?StartCodeFound?rewind;
??char?*Buf;
????
??if?((Buf?=?(char*)calloc?(nalu->max_size??sizeof(char)))?==?NULL)?no_mem_exit(“GetAnnexbNALU:?Buf“);
??nalu->startcodeprefix_len=3;
??info2?=?0;
??info3?=?0;
??
??if?(3?!=?fread?(Buf?1?3?bits))
??{
????free(Buf);
????return?0;
??}
??info2?=?FindStartCode?(Buf?2);
??if(info2?!=?1)?{
????if(1?!=?fread(Buf+3?1?1?bits))
????{
??????free(Buf);
??????return?0;
????}
????info3?=?FindStartCode?(Buf?3);
??}
??if?(info2?!=?1?&&?info3?!=?1)
??{
????printf?(“GetAnnexbNALU:?no?Start?Code?at?the?begin?of?the?NALU?return?-1\n“);
????free(Buf);
????return?-1;
??}
??if(?info2?==?1)?{
????nalu->startcodeprefix_len?=?3;
????pos?=?3;
??}
??else?if(info3?==1?)?{
????pos?=?4;
????nalu->startcodeprefix_len?=?4;
??}
??else
????printf(?“?Panic:?Error?\n“);
??StartCodeFound?=?0;
??info2?=?0;
??info3?=?0;
??while?(!StartCodeFound)
??{
????if?(feof?(bits))
????{
??????nalu->len?=?(pos-1)-nalu->startcodeprefix_len;
??????memcpy?(nalu->buf?&Buf[nalu->startcodeprefix_len]?nalu->len);?????
??????nalu->forbidden_bit?=?(nalu->buf[0]>>7)?&?1;
??????nalu->nal_reference_idc?=?(nalu->buf[0]>>5)?&?3;
??????nalu->nal_unit_type?=?(nalu->buf[0])?&?0x1f;
//?printf?(“GetAnnexbNALU?eof?case:?pos?%d?nalu->len?%d?nalu->reference_idc?%d?nal_unit_type?%d?\n“?pos?nalu->len?nalu->nal_reference_idc?nalu->nal_unit_type);
#if?TRACE
??fprintf?(p_trace?“\n\nLast?NALU?in?File\n\n“);
??fprintf?(p_trace?“Annex?B?NALU?w/?%s?startcode?len?%d?forbidden_bit?%d?nal_reference_idc?%d?nal_unit_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-02-04?18:00??h264_JM源碼\
?????目錄???????????0??2012-02-04?18:00??h264_JM源碼\JM83\
?????文件???????28707??2004-07-26?16:04??h264_JM源碼\JM83\CHANGES.TXT
?????文件????????5002??2004-07-26?16:04??h264_JM源碼\JM83\Changes_detail.txt
?????文件????????3403??2004-07-26?16:04??h264_JM源碼\JM83\Readme.txt
?????目錄???????????0??2012-02-04?18:00??h264_JM源碼\JM83\bin\
?????文件????????1120??2004-08-20?10:58??h264_JM源碼\JM83\bin\dataDec.txt
?????文件?????????753??2004-07-26?16:03??h264_JM源碼\JM83\bin\decoder.cfg
?????文件???????11226??2004-07-26?16:03??h264_JM源碼\JM83\bin\encoder_ba
?????文件???????11226??2004-07-26?16:03??h264_JM源碼\JM83\bin\encoder_extended.cfg
?????文件???????11226??2004-07-26?16:03??h264_JM源碼\JM83\bin\encoder_main.cfg
?????文件??????114048??2004-07-26?16:03??h264_JM源碼\JM83\bin\foreman_part_qcif.yuv
?????文件??????421888??2004-08-20?10:53??h264_JM源碼\JM83\bin\ldecod._xe
?????文件??????409666??2004-08-20?10:43??h264_JM源碼\JM83\bin\ldecod.exe
?????文件??????131425??2004-08-20?10:43??h264_JM源碼\JM83\bin\ldecod.map
?????文件???????14908??2004-08-20?10:53??h264_JM源碼\JM83\bin\ldecod.pbi
?????文件???????14976??2004-08-20?10:58??h264_JM源碼\JM83\bin\ldecod.pbo
?????文件???????22312??2004-08-20?10:58??h264_JM源碼\JM83\bin\ldecod.pbt
?????文件??????697344??2004-08-20?10:43??h264_JM源碼\JM83\bin\ldecod.pdb
?????文件??????????16??2004-07-26?16:03??h264_JM源碼\JM83\bin\leakybucketrate.cfg
?????文件??????618562??2004-07-26?17:05??h264_JM源碼\JM83\bin\lencod.exe
?????文件??????245248??2004-07-26?17:05??h264_JM源碼\JM83\bin\lencod.map
?????文件??????992256??2004-07-26?17:05??h264_JM源碼\JM83\bin\lencod.pdb
?????文件????????1686??2004-08-20?10:58??h264_JM源碼\JM83\bin\log.dec
?????文件??????????66??2004-07-26?16:03??h264_JM源碼\JM83\bin\sg0conf.cfg
?????文件?????????126??2004-07-26?16:03??h264_JM源碼\JM83\bin\sg2conf.cfg
?????文件????????1188??2004-07-26?16:03??h264_JM源碼\JM83\bin\sg6conf.cfg
?????文件???????58302??2004-08-01?20:31??h264_JM源碼\JM83\bin\test.264
?????文件?????7679232??2004-08-20?10:58??h264_JM源碼\JM83\bin\test_dec.yuv
?????文件????????1383??2004-07-26?16:04??h264_JM源碼\JM83\copyright.txt
?????文件???????16175??2004-08-20?15:23??h264_JM源碼\JM83\data.txt
............此處省略1178個文件信息
評論
共有 條評論