|
|
@@ -28,6 +28,8 @@ |
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
#include "avformat.h" |
|
|
|
|
|
|
|
#define JV_PREAMBLE_SIZE 5 |
|
|
|
|
|
|
|
typedef struct { |
|
|
|
int audio_size; /** audio packet size (bytes) */ |
|
|
|
int video_size; /** video packet size (bytes) */ |
|
|
@@ -154,15 +156,15 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
jv->state++; |
|
|
|
if (jvf->video_size || jvf->palette_size) { |
|
|
|
int size = jvf->video_size + jvf->palette_size; |
|
|
|
if (av_new_packet(pkt, size + 5)) |
|
|
|
if (av_new_packet(pkt, size + JV_PREAMBLE_SIZE)) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
AV_WL32(pkt->data, jvf->video_size); |
|
|
|
pkt->data[4] = jvf->video_type; |
|
|
|
if (avio_read(pb, pkt->data + 5, size) < 0) |
|
|
|
if (avio_read(pb, pkt->data + JV_PREAMBLE_SIZE, size) < 0) |
|
|
|
return AVERROR(EIO); |
|
|
|
|
|
|
|
pkt->size = size + 5; |
|
|
|
pkt->size = size + JV_PREAMBLE_SIZE; |
|
|
|
pkt->stream_index = 1; |
|
|
|
pkt->pts = jv->pts; |
|
|
|
if (jvf->video_type != 1) |
|
|
|