mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/extract_extradata_bsf: use the parsing code from vc1_split()
It's a simplifaction of the same code, originally commited as b4b9a64bdb
.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
ec996163c8
commit
173fdc4dea
|
@ -137,20 +137,16 @@ static int extract_extradata_vc1(AVBSFContext *ctx, AVPacket *pkt,
|
||||||
uint8_t **data, int *size)
|
uint8_t **data, int *size)
|
||||||
{
|
{
|
||||||
ExtractExtradataContext *s = ctx->priv_data;
|
ExtractExtradataContext *s = ctx->priv_data;
|
||||||
|
const uint8_t *ptr = pkt->data, *end = pkt->data + pkt->size;
|
||||||
uint32_t state = UINT32_MAX;
|
uint32_t state = UINT32_MAX;
|
||||||
int has_extradata = 0, extradata_size = 0;
|
int has_extradata = 0, extradata_size = 0;
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < pkt->size; i++) {
|
while (ptr < end) {
|
||||||
state = (state << 8) | pkt->data[i];
|
ptr = avpriv_find_start_code(ptr, end, &state);
|
||||||
if (IS_MARKER(state)) {
|
if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) {
|
||||||
if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) {
|
has_extradata = 1;
|
||||||
has_extradata = 1;
|
} else if (has_extradata && IS_MARKER(state))
|
||||||
} else if (has_extradata) {
|
extradata_size = ptr - 4 - pkt->data;
|
||||||
extradata_size = i - 3;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extradata_size) {
|
if (extradata_size) {
|
||||||
|
|
Loading…
Reference in New Issue