|
|
|
@@ -197,7 +197,7 @@ static int avi_write_header(AVFormatContext *s) |
|
|
|
} |
|
|
|
avio_wl32(pb, bitrate / 8); /* XXX: not quite exact */ |
|
|
|
avio_wl32(pb, 0); /* padding */ |
|
|
|
if (url_is_streamed(pb)) |
|
|
|
if (!pb->seekable) |
|
|
|
avio_wl32(pb, AVIF_TRUSTCKTYPE | AVIF_ISINTERLEAVED); /* flags */ |
|
|
|
else |
|
|
|
avio_wl32(pb, AVIF_TRUSTCKTYPE | AVIF_HASINDEX | AVIF_ISINTERLEAVED); /* flags */ |
|
|
|
@@ -259,7 +259,7 @@ static int avi_write_header(AVFormatContext *s) |
|
|
|
|
|
|
|
avio_wl32(pb, 0); /* start */ |
|
|
|
avist->frames_hdr_strm = avio_tell(pb); /* remember this offset to fill later */ |
|
|
|
if (url_is_streamed(pb)) |
|
|
|
if (!pb->seekable) |
|
|
|
avio_wl32(pb, AVI_MAX_RIFF_SIZE); /* FIXME: this may be broken, but who cares */ |
|
|
|
else |
|
|
|
avio_wl32(pb, 0); /* length, XXX: filled later */ |
|
|
|
@@ -303,7 +303,7 @@ static int avi_write_header(AVFormatContext *s) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!url_is_streamed(pb)) { |
|
|
|
if (pb->seekable) { |
|
|
|
unsigned char tag[5]; |
|
|
|
int j; |
|
|
|
|
|
|
|
@@ -362,7 +362,7 @@ static int avi_write_header(AVFormatContext *s) |
|
|
|
ff_end_tag(pb, list2); |
|
|
|
} |
|
|
|
|
|
|
|
if (!url_is_streamed(pb)) { |
|
|
|
if (pb->seekable) { |
|
|
|
/* AVI could become an OpenDML one, if it grows beyond 2Gb range */ |
|
|
|
avi->odml_list = ff_start_tag(pb, "JUNK"); |
|
|
|
ffio_wfourcc(pb, "odml"); |
|
|
|
@@ -406,7 +406,7 @@ static int avi_write_ix(AVFormatContext *s) |
|
|
|
char ix_tag[] = "ix00"; |
|
|
|
int i, j; |
|
|
|
|
|
|
|
assert(!url_is_streamed(pb)); |
|
|
|
assert(pb->seekable); |
|
|
|
|
|
|
|
if (avi->riff_id > AVI_MASTER_INDEX_SIZE) |
|
|
|
return -1; |
|
|
|
@@ -464,7 +464,7 @@ static int avi_write_idx1(AVFormatContext *s) |
|
|
|
int i; |
|
|
|
char tag[5]; |
|
|
|
|
|
|
|
if (!url_is_streamed(pb)) { |
|
|
|
if (pb->seekable) { |
|
|
|
AVIStream *avist; |
|
|
|
AVIIentry* ie = 0, *tie; |
|
|
|
int empty, stream_id = -1; |
|
|
|
@@ -532,7 +532,7 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
avist->packet_count++; |
|
|
|
|
|
|
|
// Make sure to put an OpenDML chunk when the file size exceeds the limits |
|
|
|
if (!url_is_streamed(pb) && |
|
|
|
if (pb->seekable && |
|
|
|
(avio_tell(pb) - avi->riff_start > AVI_MAX_RIFF_SIZE)) { |
|
|
|
|
|
|
|
avi_write_ix(s); |
|
|
|
@@ -552,7 +552,7 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
avist->audio_strm_length += size; |
|
|
|
} |
|
|
|
|
|
|
|
if (!url_is_streamed(s->pb)) { |
|
|
|
if (s->pb->seekable) { |
|
|
|
AVIIndex* idx = &avist->indexes; |
|
|
|
int cl = idx->entry / AVI_INDEX_CLUSTER_SIZE; |
|
|
|
int id = idx->entry % AVI_INDEX_CLUSTER_SIZE; |
|
|
|
@@ -590,7 +590,7 @@ static int avi_write_trailer(AVFormatContext *s) |
|
|
|
int i, j, n, nb_frames; |
|
|
|
int64_t file_size; |
|
|
|
|
|
|
|
if (!url_is_streamed(pb)){ |
|
|
|
if (pb->seekable){ |
|
|
|
if (avi->riff_id == 1) { |
|
|
|
ff_end_tag(pb, avi->movi_list); |
|
|
|
res = avi_write_idx1(s); |
|
|
|
|