Merge commit '9446d75941d639f19cfa9ae007eb4c5ca041f200'
* commit '9446d75941d639f19cfa9ae007eb4c5ca041f200': ffmpeg: merge output_codecs array into AVOutputStream members. rtpenc_latm: Consistently use "Libav" in license boilerplate. rtsp: Don't pass string pointer as format string to ff_url_join mmsh: fixed printf injection bug in mmsh request codec-regression: remove pointless -r options for dnxhd Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
4f643430f2
18
ffmpeg.c
18
ffmpeg.c
@ -122,9 +122,7 @@ static int nb_input_codecs = 0;
|
|||||||
static int nb_input_files_ts_scale[MAX_FILES] = {0};
|
static int nb_input_files_ts_scale[MAX_FILES] = {0};
|
||||||
|
|
||||||
static AVFormatContext *output_files[MAX_FILES];
|
static AVFormatContext *output_files[MAX_FILES];
|
||||||
static AVCodec **output_codecs = NULL;
|
|
||||||
static int nb_output_files = 0;
|
static int nb_output_files = 0;
|
||||||
static int nb_output_codecs = 0;
|
|
||||||
|
|
||||||
static AVStreamMap *stream_maps = NULL;
|
static AVStreamMap *stream_maps = NULL;
|
||||||
static int nb_stream_maps;
|
static int nb_stream_maps;
|
||||||
@ -276,6 +274,8 @@ typedef struct AVOutputStream {
|
|||||||
struct AVInputStream *sync_ist; /* input stream to sync against */
|
struct AVInputStream *sync_ist; /* input stream to sync against */
|
||||||
int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ //FIXME look at frame_number
|
int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ //FIXME look at frame_number
|
||||||
AVBitStreamFilterContext *bitstream_filters;
|
AVBitStreamFilterContext *bitstream_filters;
|
||||||
|
AVCodec *enc;
|
||||||
|
|
||||||
/* video only */
|
/* video only */
|
||||||
int video_resample;
|
int video_resample;
|
||||||
AVFrame resample_frame; /* temporary frame for image resampling */
|
AVFrame resample_frame; /* temporary frame for image resampling */
|
||||||
@ -554,7 +554,6 @@ static int ffmpeg_exit(int ret)
|
|||||||
|
|
||||||
av_free(streamid_map);
|
av_free(streamid_map);
|
||||||
av_free(input_codecs);
|
av_free(input_codecs);
|
||||||
av_free(output_codecs);
|
|
||||||
av_free(stream_maps);
|
av_free(stream_maps);
|
||||||
av_free(meta_data_maps);
|
av_free(meta_data_maps);
|
||||||
|
|
||||||
@ -2374,7 +2373,7 @@ static int transcode(AVFormatContext **output_files,
|
|||||||
for(i=0;i<nb_ostreams;i++) {
|
for(i=0;i<nb_ostreams;i++) {
|
||||||
ost = ost_table[i];
|
ost = ost_table[i];
|
||||||
if (ost->encoding_needed) {
|
if (ost->encoding_needed) {
|
||||||
AVCodec *codec = i < nb_output_codecs ? output_codecs[i] : NULL;
|
AVCodec *codec = ost->enc;
|
||||||
AVCodecContext *dec = input_streams[ost->source_index].st->codec;
|
AVCodecContext *dec = input_streams[ost->source_index].st->codec;
|
||||||
if (!codec)
|
if (!codec)
|
||||||
codec = avcodec_find_encoder(ost->st->codec->codec_id);
|
codec = avcodec_find_encoder(ost->st->codec->codec_id);
|
||||||
@ -3525,13 +3524,12 @@ static void new_video_stream(AVFormatContext *oc, int file_idx)
|
|||||||
}
|
}
|
||||||
ost = new_output_stream(oc, file_idx);
|
ost = new_output_stream(oc, file_idx);
|
||||||
|
|
||||||
output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output_codecs, nb_output_codecs + 1);
|
|
||||||
if(!video_stream_copy){
|
if(!video_stream_copy){
|
||||||
if (video_codec_name) {
|
if (video_codec_name) {
|
||||||
codec_id = find_codec_or_die(video_codec_name, AVMEDIA_TYPE_VIDEO, 1,
|
codec_id = find_codec_or_die(video_codec_name, AVMEDIA_TYPE_VIDEO, 1,
|
||||||
avcodec_opts[AVMEDIA_TYPE_VIDEO]->strict_std_compliance);
|
avcodec_opts[AVMEDIA_TYPE_VIDEO]->strict_std_compliance);
|
||||||
codec = avcodec_find_encoder_by_name(video_codec_name);
|
codec = avcodec_find_encoder_by_name(video_codec_name);
|
||||||
output_codecs[nb_output_codecs-1] = codec;
|
ost->enc = codec;
|
||||||
} else {
|
} else {
|
||||||
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO);
|
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO);
|
||||||
codec = avcodec_find_encoder(codec_id);
|
codec = avcodec_find_encoder(codec_id);
|
||||||
@ -3668,13 +3666,12 @@ static void new_audio_stream(AVFormatContext *oc, int file_idx)
|
|||||||
}
|
}
|
||||||
ost = new_output_stream(oc, file_idx);
|
ost = new_output_stream(oc, file_idx);
|
||||||
|
|
||||||
output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output_codecs, nb_output_codecs + 1);
|
|
||||||
if(!audio_stream_copy){
|
if(!audio_stream_copy){
|
||||||
if (audio_codec_name) {
|
if (audio_codec_name) {
|
||||||
codec_id = find_codec_or_die(audio_codec_name, AVMEDIA_TYPE_AUDIO, 1,
|
codec_id = find_codec_or_die(audio_codec_name, AVMEDIA_TYPE_AUDIO, 1,
|
||||||
avcodec_opts[AVMEDIA_TYPE_AUDIO]->strict_std_compliance);
|
avcodec_opts[AVMEDIA_TYPE_AUDIO]->strict_std_compliance);
|
||||||
codec = avcodec_find_encoder_by_name(audio_codec_name);
|
codec = avcodec_find_encoder_by_name(audio_codec_name);
|
||||||
output_codecs[nb_output_codecs-1] = codec;
|
ost->enc = codec;
|
||||||
} else {
|
} else {
|
||||||
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_AUDIO);
|
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_AUDIO);
|
||||||
codec = avcodec_find_encoder(codec_id);
|
codec = avcodec_find_encoder(codec_id);
|
||||||
@ -3740,7 +3737,6 @@ static void new_data_stream(AVFormatContext *oc, int file_idx)
|
|||||||
}
|
}
|
||||||
new_output_stream(oc, file_idx);
|
new_output_stream(oc, file_idx);
|
||||||
data_enc = st->codec;
|
data_enc = st->codec;
|
||||||
output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output_codecs, nb_output_codecs + 1);
|
|
||||||
if (!data_stream_copy) {
|
if (!data_stream_copy) {
|
||||||
fprintf(stderr, "Data stream encoding not supported yet (only streamcopy)\n");
|
fprintf(stderr, "Data stream encoding not supported yet (only streamcopy)\n");
|
||||||
ffmpeg_exit(1);
|
ffmpeg_exit(1);
|
||||||
@ -3780,12 +3776,12 @@ static void new_subtitle_stream(AVFormatContext *oc, int file_idx)
|
|||||||
}
|
}
|
||||||
ost = new_output_stream(oc, file_idx);
|
ost = new_output_stream(oc, file_idx);
|
||||||
subtitle_enc = st->codec;
|
subtitle_enc = st->codec;
|
||||||
output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output_codecs, nb_output_codecs + 1);
|
|
||||||
if(!subtitle_stream_copy){
|
if(!subtitle_stream_copy){
|
||||||
if (subtitle_codec_name) {
|
if (subtitle_codec_name) {
|
||||||
codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, 1,
|
codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, 1,
|
||||||
avcodec_opts[AVMEDIA_TYPE_SUBTITLE]->strict_std_compliance);
|
avcodec_opts[AVMEDIA_TYPE_SUBTITLE]->strict_std_compliance);
|
||||||
codec= output_codecs[nb_output_codecs-1] = avcodec_find_encoder_by_name(subtitle_codec_name);
|
codec = avcodec_find_encoder_by_name(subtitle_codec_name);
|
||||||
|
ost->enc = codec;
|
||||||
} else {
|
} else {
|
||||||
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_SUBTITLE);
|
codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_SUBTITLE);
|
||||||
codec = avcodec_find_encoder(codec_id);
|
codec = avcodec_find_encoder(codec_id);
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
* License as published by the Free Software Foundation; either
|
* License as published by the Free Software Foundation; either
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
* FFmpeg is distributed in the hope that it will be useful,
|
* Libav is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Lesser General Public License for more details.
|
* Lesser General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with FFmpeg; if not, write to the Free Software
|
* License along with Libav; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1234,10 +1234,10 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
|
|||||||
if (reply->transports[0].source[0]) {
|
if (reply->transports[0].source[0]) {
|
||||||
ff_url_join(url, sizeof(url), "rtp", NULL,
|
ff_url_join(url, sizeof(url), "rtp", NULL,
|
||||||
reply->transports[0].source,
|
reply->transports[0].source,
|
||||||
reply->transports[0].server_port_min, options);
|
reply->transports[0].server_port_min, "%s", options);
|
||||||
} else {
|
} else {
|
||||||
ff_url_join(url, sizeof(url), "rtp", NULL, host,
|
ff_url_join(url, sizeof(url), "rtp", NULL, host,
|
||||||
reply->transports[0].server_port_min, options);
|
reply->transports[0].server_port_min, "%s", options);
|
||||||
}
|
}
|
||||||
if (!(rt->server_type == RTSP_SERVER_WMS && i > 1) &&
|
if (!(rt->server_type == RTSP_SERVER_WMS && i > 1) &&
|
||||||
rtp_set_remote_url(rtsp_st->rtp_handle, url) < 0) {
|
rtp_set_remote_url(rtsp_st->rtp_handle, url) < 0) {
|
||||||
|
@ -224,17 +224,17 @@ fi
|
|||||||
if [ -n "$do_dnxhd_1080i" ] ; then
|
if [ -n "$do_dnxhd_1080i" ] ; then
|
||||||
# FIXME: interlaced raw DNxHD decoding is broken
|
# FIXME: interlaced raw DNxHD decoding is broken
|
||||||
do_video_encoding dnxhd-1080i.mov "-vcodec dnxhd -flags +ildct -s hd1080 -b 120M -pix_fmt yuv422p -vframes 5 -an"
|
do_video_encoding dnxhd-1080i.mov "-vcodec dnxhd -flags +ildct -s hd1080 -b 120M -pix_fmt yuv422p -vframes 5 -an"
|
||||||
do_video_decoding "-r 25" "-s cif -pix_fmt yuv420p"
|
do_video_decoding "" "-s cif -pix_fmt yuv420p"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$do_dnxhd_720p" ] ; then
|
if [ -n "$do_dnxhd_720p" ] ; then
|
||||||
do_video_encoding dnxhd-720p.dnxhd "-s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an"
|
do_video_encoding dnxhd-720p.dnxhd "-s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an"
|
||||||
do_video_decoding "-r 25" "-s cif -pix_fmt yuv420p"
|
do_video_decoding "" "-s cif -pix_fmt yuv420p"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$do_dnxhd_720p_rd" ] ; then
|
if [ -n "$do_dnxhd_720p_rd" ] ; then
|
||||||
do_video_encoding dnxhd-720p-rd.dnxhd "-threads 4 -mbd rd -s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an"
|
do_video_encoding dnxhd-720p-rd.dnxhd "-threads 4 -mbd rd -s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an"
|
||||||
do_video_decoding "-r 25" "-s cif -pix_fmt yuv420p"
|
do_video_decoding "" "-s cif -pix_fmt yuv420p"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$do_svq1" ] ; then
|
if [ -n "$do_svq1" ] ; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user