|
|
@@ -46,6 +46,7 @@ typedef struct { |
|
|
int img_first; |
|
|
int img_first; |
|
|
int img_last; |
|
|
int img_last; |
|
|
int img_number; |
|
|
int img_number; |
|
|
|
|
|
int64_t pts; |
|
|
int img_count; |
|
|
int img_count; |
|
|
int is_pipe; |
|
|
int is_pipe; |
|
|
int split_planes; /**< use independent file for each Y, U, V plane */ |
|
|
int split_planes; /**< use independent file for each Y, U, V plane */ |
|
|
@@ -393,8 +394,8 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt) |
|
|
return AVERROR(ENOMEM); |
|
|
return AVERROR(ENOMEM); |
|
|
pkt->stream_index = 0; |
|
|
pkt->stream_index = 0; |
|
|
pkt->flags |= AV_PKT_FLAG_KEY; |
|
|
pkt->flags |= AV_PKT_FLAG_KEY; |
|
|
if (!s->is_pipe && !s->loop) |
|
|
|
|
|
pkt->pts = s->img_number - s->img_first; |
|
|
|
|
|
|
|
|
if (!s->is_pipe) |
|
|
|
|
|
pkt->pts = s->pts; |
|
|
|
|
|
|
|
|
pkt->size = 0; |
|
|
pkt->size = 0; |
|
|
for (i = 0; i < 3; i++) { |
|
|
for (i = 0; i < 3; i++) { |
|
|
@@ -413,6 +414,7 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt) |
|
|
} else { |
|
|
} else { |
|
|
s->img_count++; |
|
|
s->img_count++; |
|
|
s->img_number++; |
|
|
s->img_number++; |
|
|
|
|
|
s->pts++; |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@@ -432,9 +434,10 @@ static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp |
|
|
{ |
|
|
{ |
|
|
VideoDemuxData *s1 = s->priv_data; |
|
|
VideoDemuxData *s1 = s->priv_data; |
|
|
|
|
|
|
|
|
if (timestamp < 0 || timestamp > s1->img_last - s1->img_first) |
|
|
|
|
|
|
|
|
if (timestamp < 0 || !s1->loop && timestamp > s1->img_last - s1->img_first) |
|
|
return -1; |
|
|
return -1; |
|
|
s1->img_number = timestamp + s1->img_first; |
|
|
|
|
|
|
|
|
s1->img_number = timestamp%(s1->img_last - s1->img_first + 1) + s1->img_first; |
|
|
|
|
|
s1->pts = timestamp; |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|