static int avc_parse_nal_units(sbuf_t *sb, const uint8_t *buf_in, int size) { const uint8_t *p = buf_in; const uint8_t *end = p + size; const uint8_t *nal_start, *nal_end; //printf("CONVERT SIZE %d\n", size); size = 0; nal_start = avc_find_startcode(p, end); while (nal_start < end) { while(!*(nal_start++)); nal_end = avc_find_startcode(nal_start, end); /*printf("%4d bytes %5d : %d\n", nal_end - nal_start, nal_start - buf_in, nal_end - buf_in);*/ int l = nal_end - nal_start; if (l) { sbuf_put_be32(sb, l); sbuf_append(sb, nal_start, l); size += 4 + l; } nal_start = nal_end; } return size; }
const int avc_parse_nal_units(AVIOContext *pb, const uint8_t *buf_in, int size) { const uint8_t *p = buf_in; const uint8_t *end = p + size; const uint8_t *nal_start, *nal_end; size = 0; nal_start = avc_find_startcode(p, end); while (nal_start < end) { while (!*(nal_start++)); nal_end = avc_find_startcode(nal_start, end); avio_wb32(pb, nal_end - nal_start); avio_write(pb, nal_start, nal_end - nal_start); size += 4 + nal_end - nal_start; nal_start = nal_end; } return size; }
const int avc_parse_nal_units(DllAvFormat *av_format_ctx, ByteIOContext *pb, const uint8_t *buf_in, int size) { const uint8_t *p = buf_in; const uint8_t *end = p + size; const uint8_t *nal_start, *nal_end; size = 0; nal_start = avc_find_startcode(p, end); while (nal_start < end) { while (!*(nal_start++)); nal_end = avc_find_startcode(nal_start, end); av_format_ctx->put_be32(pb, nal_end - nal_start); av_format_ctx->put_buffer(pb, nal_start, nal_end - nal_start); size += 4 + nal_end - nal_start; nal_start = nal_end; } return size; }
static int avc_parse_nal_units(sbuf_t *sb, const uint8_t *buf_in, int size) { const uint8_t *p = buf_in; const uint8_t *end = p + size; const uint8_t *nal_start, *nal_end; size = 0; nal_start = avc_find_startcode(p, end); for (;;) { while (nal_start < end && !*(nal_start++)); if (nal_start == end) break; nal_end = avc_find_startcode(nal_start, end); int l = nal_end - nal_start; sbuf_put_be32(sb, l); sbuf_append(sb, nal_start, l); size += 4 + l; nal_start = nal_end; } return size; }