mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '355d01a1bf55297b1d1f04e4bfbf0ddc93b6247e'
* commit '355d01a1bf55297b1d1f04e4bfbf0ddc93b6247e': movenc: Factorize writing ftyp and other identification tags to a separate function Conflicts: libavformat/movenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
7ca10d10aa
|
@ -3722,6 +3722,33 @@ static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s)
|
||||||
avio_wb32(pb, 0x010001); /* ? */
|
avio_wb32(pb, 0x010001); /* ? */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mov_write_identification(AVIOContext *pb, AVFormatContext *s)
|
||||||
|
{
|
||||||
|
MOVMuxContext *mov = s->priv_data;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
mov_write_ftyp_tag(pb,s);
|
||||||
|
if (mov->mode == MODE_PSP) {
|
||||||
|
int video_streams_nb = 0, audio_streams_nb = 0, other_streams_nb = 0;
|
||||||
|
for (i = 0; i < s->nb_streams; i++) {
|
||||||
|
AVStream *st = s->streams[i];
|
||||||
|
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||||
|
video_streams_nb++;
|
||||||
|
else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||||
|
audio_streams_nb++;
|
||||||
|
else
|
||||||
|
other_streams_nb++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (video_streams_nb != 1 || audio_streams_nb != 1 || other_streams_nb) {
|
||||||
|
av_log(s, AV_LOG_ERROR, "PSP mode need one video and one audio stream\n");
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
}
|
||||||
|
mov_write_uuidprof_tag(pb, s);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int mov_parse_mpeg2_frame(AVPacket *pkt, uint32_t *flags)
|
static int mov_parse_mpeg2_frame(AVPacket *pkt, uint32_t *flags)
|
||||||
{
|
{
|
||||||
uint32_t c = -1;
|
uint32_t c = -1;
|
||||||
|
@ -4590,25 +4617,8 @@ static int mov_write_header(AVFormatContext *s)
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
mov_write_ftyp_tag(pb,s);
|
if ((ret = mov_write_identification(pb, s)) < 0)
|
||||||
if (mov->mode == MODE_PSP) {
|
return ret;
|
||||||
int video_streams_nb = 0, audio_streams_nb = 0, other_streams_nb = 0;
|
|
||||||
for (i = 0; i < s->nb_streams; i++) {
|
|
||||||
AVStream *st = s->streams[i];
|
|
||||||
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
|
|
||||||
video_streams_nb++;
|
|
||||||
else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
|
|
||||||
audio_streams_nb++;
|
|
||||||
else
|
|
||||||
other_streams_nb++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (video_streams_nb != 1 || audio_streams_nb != 1 || other_streams_nb) {
|
|
||||||
av_log(s, AV_LOG_ERROR, "PSP mode need one video and one audio stream\n");
|
|
||||||
return AVERROR(EINVAL);
|
|
||||||
}
|
|
||||||
mov_write_uuidprof_tag(pb, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
mov->nb_streams = s->nb_streams;
|
mov->nb_streams = s->nb_streams;
|
||||||
if (mov->mode & (MODE_MP4|MODE_MOV|MODE_IPOD) && s->nb_chapters)
|
if (mov->mode & (MODE_MP4|MODE_MOV|MODE_IPOD) && s->nb_chapters)
|
||||||
|
|
Loading…
Reference in New Issue