• 大小: 10MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-07
  • 语言: 其他
  • 标签: jm8.6  

资源简介

自己注释的jm8.6最终的注释版本,希望和广大学者一起研究,一起进步

资源截图

代码片段和文件信息


/*!
 *************************************************************************************
 * \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;                //!< the bit stream file
static int FindStartCode (unsigned char *Buf int zeros_in_startcode);

int IsFirstByteStreamNALU=1;
int LastAccessUnitExists=0;
int NALUCount=0;


/*!
 ************************************************************************
 * \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;
  int LeadingZero8BitsCount=0 TrailingZero8Bits=0;
    
  if ((Buf = (char*)calloc (nalu->max_size  sizeof(char))) == NULL) no_mem_exit(“GetAnnexbNALU: Buf“);

  while(!feof(bits) && (Buf[pos++]=fgetc(bits))==0);
  
  if(feof(bits))
  {
    if(pos==0)
    return 0;
    else
    {
      printf( “GetAnnexbNALU can‘t read start code\n“);
      free(Buf);
      return -1;
    }
  }

  if(Buf[pos-1]!=1)
  {
    printf (“GetAnnexbNALU: no Start Code at the begin of the NALU return -1\n“);
    free(Buf);
    return -1;
  }

  if(pos<3)
  {
    printf (“GetAnnexbNALU: no Start Code at the begin of the NALU return -1\n“);
    free(Buf);
    return -1;
  }
  else if(pos==3)
  {
    nalu->startcodeprefix_len = 3;
    LeadingZero8BitsCount = 0;
  }
  else
  {
    LeadingZero8BitsCount = pos-4;
    nalu->startcodeprefix_len = 4;
  }

  //the 1st byte stream NAL unit can has leading_zero_8bits but subsequent ones are not
  //allowed to contain it since these zeros(if any) are considered trailing_zero_8bits
  //of the previous byte stream NAL unit.
  if(!IsFirstByteStreamNALU && LeadingZero8BitsCount>0)
  {
    printf (“GetAnnexbNALU: The leading_zero_8bits syntax can only be present in the first byte stream NAL unit return -1\n“);
    free(Buf);
    return -1;
  }
  IsFirstByteStreamNALU=0;

  StartCodeFound = 0;
  info2 = 0;
  info3 = 0;

  while (!StartCodeFound)
  {
    if (feof (bits))
    {
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        644  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\data.txt

     文件        160  2013-01-19 21:41  jm8.6最终注释版\jm8.6final\JM\bin\dataDec.txt

     文件        753  2004-09-16 22:38  jm8.6最终注释版\jm8.6final\JM\bin\decoder.cfg

     文件      11218  2012-11-28 11:51  jm8.6最终注释版\jm8.6final\JM\bin\encoder_baseline.cfg

     文件      11221  2004-09-02 12:46  jm8.6最终注释版\jm8.6final\JM\bin\encoder_extended.cfg

     文件      11217  2012-11-28 11:51  jm8.6最终注释版\jm8.6final\JM\bin\encoder_main.cfg

     文件     114048  2001-09-03 13:05  jm8.6最终注释版\jm8.6final\JM\bin\foreman_part_qcif.yuv

     文件   11404800  2006-04-22 05:18  jm8.6最终注释版\jm8.6final\JM\bin\foreman_qcif.yuv

     文件     430179  2013-01-19 21:38  jm8.6最终注释版\jm8.6final\JM\bin\ldecod.exe

     文件     136188  2013-01-19 21:38  jm8.6最终注释版\jm8.6final\JM\bin\ldecod.map

     文件     730112  2013-01-19 21:38  jm8.6最终注释版\jm8.6final\JM\bin\ldecod.pdb

     文件        100  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\leakybucketparam.cfg

     文件         16  2001-12-20 10:42  jm8.6最终注释版\jm8.6final\JM\bin\leakybucketrate.cfg

     文件    1587836  2013-01-12 22:02  jm8.6最终注释版\jm8.6final\JM\bin\lencod.ilk

     文件          0  2013-01-12 22:02  jm8.6最终注释版\jm8.6final\JM\bin\lencod.map

     文件    1025024  2013-01-12 22:02  jm8.6最终注释版\jm8.6final\JM\bin\lencod.pdb

     文件       2593  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\log.dat

     文件        642  2013-01-19 21:41  jm8.6最终注释版\jm8.6final\JM\bin\log.dec

     文件         66  2004-05-25 15:54  jm8.6最终注释版\jm8.6final\JM\bin\sg0conf.cfg

     文件        126  2004-05-25 15:54  jm8.6最终注释版\jm8.6final\JM\bin\sg2conf.cfg

     文件       1188  2004-05-25 15:54  jm8.6最终注释版\jm8.6final\JM\bin\sg6conf.cfg

     文件       2919  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\stat.dat

     文件       7487  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\test.264

     文件          0  2013-01-19 21:41  jm8.6最终注释版\jm8.6final\JM\bin\test_dec.yuv

     文件     380160  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\test_rec.yuv

     文件    2004269  2012-12-14 11:42  jm8.6最终注释版\jm8.6final\JM\bin\trace_enc.txt

     文件      30821  2004-09-16 18:00  jm8.6最终注释版\jm8.6final\JM\CHANGES.TXT

     文件       5002  2004-01-14 15:19  jm8.6最终注释版\jm8.6final\JM\Changes_detail.txt

     文件       1383  2003-06-11 20:22  jm8.6最终注释版\jm8.6final\JM\copyright.txt

     文件       1069  2001-08-29 13:58  jm8.6最终注释版\jm8.6final\JM\disclaimer.txt

............此处省略361个文件信息

评论

共有 条评论