int getheader () { unsigned int code, gob; /* look for startcode */ startcode (); code = getbits (PSC_LENGTH); gob = getbits (5); if (gob == SE_CODE) return 0; if (gob == 0) { if (trace) { fprintf (trace_file, "\nPSC: "); printbits ((code << (5 + gob)), 22, 22); } getpicturehdr (); if (syntax_arith_coding) /* reset decoder after receiving */ decoder_reset (); /* fixed length PSC string */ } else { if (trace) { fprintf (trace_file, "\nGBSC: "); printbits ((code << (5 + gob)), 22, 22); } } return gob + 1; }
static int gethdr() { unsigned int code; for (;;) { /* look for startcode */ startcode(); code = getbits32(); switch (code) { case SEQ_START_CODE: getseqhdr(); break; case GOP_START_CODE: getgophdr(); break; case PICTURE_START_CODE: getpicturehdr(); return 1; break; case SEQ_END_CODE: return 0; break; default: if (!quiet) fprintf(stderr,"Unexpected startcode %08x (ignored)\n",code); break; } } }