|
|
|
@@ -414,6 +414,7 @@ static void get_attachment(AVFormatContext *s, AVIOContext *pb, int length) |
|
|
|
char description[1024]; |
|
|
|
unsigned int filesize; |
|
|
|
AVStream *st; |
|
|
|
int ret; |
|
|
|
int64_t pos = avio_tell(pb); |
|
|
|
|
|
|
|
avio_get_str16le(pb, INT_MAX, mime, sizeof(mime)); |
|
|
|
@@ -430,13 +431,14 @@ static void get_attachment(AVFormatContext *s, AVIOContext *pb, int length) |
|
|
|
if (!st) |
|
|
|
goto done; |
|
|
|
av_dict_set(&st->metadata, "title", description, 0); |
|
|
|
st->codec->codec_type = AVMEDIA_TYPE_VIDEO; |
|
|
|
st->codec->codec_id = AV_CODEC_ID_MJPEG; |
|
|
|
st->codec->codec_type = AVMEDIA_TYPE_ATTACHMENT; |
|
|
|
st->codec->extradata = av_mallocz(filesize); |
|
|
|
if (!st->codec->extradata) |
|
|
|
ret = av_get_packet(pb, &st->attached_pic, filesize); |
|
|
|
if (ret < 0) |
|
|
|
goto done; |
|
|
|
st->codec->extradata_size = filesize; |
|
|
|
avio_read(pb, st->codec->extradata, filesize); |
|
|
|
st->attached_pic.stream_index = st->index; |
|
|
|
st->attached_pic.flags |= AV_PKT_FLAG_KEY; |
|
|
|
st->disposition |= AV_DISPOSITION_ATTACHED_PIC; |
|
|
|
done: |
|
|
|
avio_seek(pb, pos + length, SEEK_SET); |
|
|
|
} |
|
|
|
|