[svn] / trunk / xvidcore / src / bitstream / bitstream.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/bitstream/bitstream.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 851, Sat Feb 15 15:22:19 2003 UTC revision 1098, Mon Jul 28 12:39:32 2003 UTC
# Line 438  Line 438 
438          uint32_t coding_type;          uint32_t coding_type;
439          uint32_t start_code;          uint32_t start_code;
440          uint32_t time_incr = 0;          uint32_t time_incr = 0;
441          int32_t time_increment;          int32_t time_increment = 0;
442          int resize = 0;          int resize = 0;
443    
444          do {          do {
# Line 1070  Line 1070 
1070    
1071                          DPRINTF(DPRINTF_STARTCODE, "<user_data>: %s\n", tmp);                          DPRINTF(DPRINTF_STARTCODE, "<user_data>: %s\n", tmp);
1072    
1073                            /* read xvid bitstream version */
1074                            if(strncmp(tmp, "XviD", 4) == 0) {
1075                                    sscanf(tmp, "XviD%d", &dec->bs_version);
1076                                    DPRINTF(DPRINTF_HEADER, "xvid bitstream version=%i", dec->bs_version);
1077                            }
1078    
1079                      /* divx detection */                      /* divx detection */
1080                          i = sscanf(tmp, "DivX%dBuild%d%c", &version, &build, &packed);                          i = sscanf(tmp, "DivX%dBuild%d%c", &version, &build, &packed);
1081                          if (i < 2)                          if (i < 2)
# Line 1153  Line 1159 
1159          BitstreamPad(bs);          BitstreamPad(bs);
1160          BitstreamPutBits(bs, VISOBJ_START_CODE, 32);          BitstreamPutBits(bs, VISOBJ_START_CODE, 32);
1161          BitstreamPutBits(bs, 0, 1);             // is_visual_object_identifier          BitstreamPutBits(bs, 0, 1);             // is_visual_object_identifier
1162    
1163            /* Video type */
1164          BitstreamPutBits(bs, VISOBJ_TYPE_VIDEO, 4);             // visual_object_type          BitstreamPutBits(bs, VISOBJ_TYPE_VIDEO, 4);             // visual_object_type
1165            BitstreamPutBit(bs, 0); /* video_signal_type */
1166    
1167          // video object_start_code & vo_id          // video object_start_code & vo_id
1168          BitstreamPad(bs);          BitstreamPadAlways(bs); // next_start_code()
1169          BitstreamPutBits(bs, VIDOBJ_START_CODE|(vo_id&0x5), 32);          BitstreamPutBits(bs, VIDOBJ_START_CODE|(vo_id&0x5), 32);
1170    
1171          // video_object_layer_start_code & vol_id          // video_object_layer_start_code & vol_id
# Line 1174  Line 1183 
1183          {          {
1184                  BitstreamPutBit(bs, 1);         // is_object_layer_identified                  BitstreamPutBit(bs, 1);         // is_object_layer_identified
1185                  BitstreamPutBits(bs, vol_ver_id, 4);    // vol_ver_id == 2                  BitstreamPutBits(bs, vol_ver_id, 4);    // vol_ver_id == 2
1186                  BitstreamPutBits(bs, 4, 3); // vol_ver_priority (1==lowest, 7==highest) ??                  BitstreamPutBits(bs, 4, 3); // vol_ver_priority (1==highest, 7==lowest)
1187          }          }
1188    
1189          BitstreamPutBits(bs, 1, 4);     // aspect_ratio_info (1=1:1)          BitstreamPutBits(bs, 1, 4);     // aspect_ratio_info (1=1:1)
# Line 1270  Line 1279 
1279    
1280          BitstreamPutBit(bs, 0);         // scalability          BitstreamPutBit(bs, 0);         // scalability
1281    
1282            BitstreamPadAlways(bs); // next_start_code()
1283    
1284          /* fake divx5 id, to ensure compatibility with divx5 decoder */          /* fake divx5 id, to ensure compatibility with divx5 decoder */
1285  #define DIVX5_ID "DivX501b481p"  #define DIVX5_ID "DivX501b481p"
1286          if (pParam->max_bframes > 0 && (pParam->global & XVID_GLOBAL_PACKED)) {          if (pParam->max_bframes > 0 && (pParam->global & XVID_GLOBAL_PACKED)) {
# Line 1321  Line 1332 
1332    
1333          if (!vop_coded) {          if (!vop_coded) {
1334                  BitstreamPutBits(bs, 0, 1);                  BitstreamPutBits(bs, 0, 1);
1335    #if 0
1336                    BitstreamPadAlways(bs); /*  next_start_code() */
1337    #endif
1338                    /* NB: It's up to the function caller to write the next_start_code().
1339                     * At the moment encoder.c respects that requisite because a VOP
1340                     * always ends with a next_start_code either if it's coded or not
1341                     * and encoder.c terminates a frame with a next_start_code in whatever
1342                     * case */
1343                  return;                  return;
1344          }          }
1345    

Legend:
Removed from v.851  
changed lines
  Added in v.1098

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4