Allow forcing a frame size in bytes for image2pipe.

This allows decoding of concatenated frames encoded in
uncompressed formats like v210.
The frame size cannot be generally calculated, FFmpeg
also supports broken encoders.

Fixes ticket #1869.
This commit is contained in:
Carl Eugen Hoyos 2012-11-10 02:25:17 +01:00
parent f91f049a22
commit b56ff0b261

View File

@ -61,6 +61,7 @@ typedef struct {
#endif
int start_number;
int start_number_range;
int frame_size;
} VideoDemuxData;
static const int sizes[][2] = {
@ -372,7 +373,11 @@ static int read_packet(AVFormatContext *s1, AVPacket *pkt)
f[0] = s1->pb;
if (url_feof(f[0]))
return AVERROR(EIO);
size[0]= 4096;
if (s->frame_size > 0) {
size[0] = s->frame_size;
} else {
size[0]= 4096;
}
}
if (av_new_packet(pkt, size[0] + size[1] + size[2]) < 0)
@ -427,6 +432,7 @@ static const AVOption options[] = {
{ "start_number", "set first number in the sequence", OFFSET(start_number), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
{ "start_number_range", "set range for looking at the first sequence number", OFFSET(start_number_range), AV_OPT_TYPE_INT, {.i64 = 5}, 1, INT_MAX, DEC },
{ "video_size", "set video size", OFFSET(video_size), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
{ "frame_size", "force frame size in bytes", OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC },
{ NULL },
};