mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
AVOutputFormat mpeg2dvd_mux and int is_dvd from the dvd patch by (Paul Curtis <pfc at terrapin dot com>)
Originally committed as revision 3557 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f20ad5534a
commit
78a0efb4fc
2
ffmpeg.c
2
ffmpeg.c
@ -3672,7 +3672,7 @@ static void opt_target(const char *arg)
|
|||||||
|
|
||||||
opt_video_codec("mpeg2video");
|
opt_video_codec("mpeg2video");
|
||||||
opt_audio_codec("ac3");
|
opt_audio_codec("ac3");
|
||||||
opt_format("vob");
|
opt_format("dvd");
|
||||||
|
|
||||||
opt_frame_size(norm ? "720x480" : "720x576");
|
opt_frame_size(norm ? "720x480" : "720x576");
|
||||||
opt_gop_size(norm ? "18" : "15");
|
opt_gop_size(norm ? "18" : "15");
|
||||||
|
@ -60,6 +60,7 @@ typedef struct {
|
|||||||
int is_mpeg2;
|
int is_mpeg2;
|
||||||
int is_vcd;
|
int is_vcd;
|
||||||
int is_svcd;
|
int is_svcd;
|
||||||
|
int is_dvd;
|
||||||
int64_t last_scr; /* current system clock */
|
int64_t last_scr; /* current system clock */
|
||||||
|
|
||||||
double vcd_padding_bitrate; //FIXME floats
|
double vcd_padding_bitrate; //FIXME floats
|
||||||
@ -94,6 +95,7 @@ static AVOutputFormat mpeg1system_mux;
|
|||||||
static AVOutputFormat mpeg1vcd_mux;
|
static AVOutputFormat mpeg1vcd_mux;
|
||||||
static AVOutputFormat mpeg2vob_mux;
|
static AVOutputFormat mpeg2vob_mux;
|
||||||
static AVOutputFormat mpeg2svcd_mux;
|
static AVOutputFormat mpeg2svcd_mux;
|
||||||
|
static AVOutputFormat mpeg2dvd_mux;
|
||||||
|
|
||||||
static int put_pack_header(AVFormatContext *ctx,
|
static int put_pack_header(AVFormatContext *ctx,
|
||||||
uint8_t *buf, int64_t timestamp)
|
uint8_t *buf, int64_t timestamp)
|
||||||
@ -251,7 +253,8 @@ static int mpeg_mux_init(AVFormatContext *ctx)
|
|||||||
s->packet_number = 0;
|
s->packet_number = 0;
|
||||||
s->is_vcd = (ctx->oformat == &mpeg1vcd_mux);
|
s->is_vcd = (ctx->oformat == &mpeg1vcd_mux);
|
||||||
s->is_svcd = (ctx->oformat == &mpeg2svcd_mux);
|
s->is_svcd = (ctx->oformat == &mpeg2svcd_mux);
|
||||||
s->is_mpeg2 = (ctx->oformat == &mpeg2vob_mux || ctx->oformat == &mpeg2svcd_mux);
|
s->is_mpeg2 = (ctx->oformat == &mpeg2vob_mux || ctx->oformat == &mpeg2svcd_mux || ctx->oformat == &mpeg2dvd_mux);
|
||||||
|
s->is_dvd = (ctx->oformat == &mpeg2dvd_mux);
|
||||||
|
|
||||||
if (s->is_vcd || s->is_svcd)
|
if (s->is_vcd || s->is_svcd)
|
||||||
s->packet_size = 2324; /* VCD/SVCD packet size */
|
s->packet_size = 2324; /* VCD/SVCD packet size */
|
||||||
@ -1512,7 +1515,19 @@ static AVOutputFormat mpeg2svcd_mux = {
|
|||||||
mpeg_mux_end,
|
mpeg_mux_end,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Same as mpeg2vob_mux except the 'is_dvd' flag is set to produce NAV pkts */
|
||||||
|
static AVOutputFormat mpeg2dvd_mux = {
|
||||||
|
"dvd",
|
||||||
|
"MPEG2 PS format (DVD VOB)",
|
||||||
|
"video/mpeg",
|
||||||
|
"dvd",
|
||||||
|
sizeof(MpegMuxContext),
|
||||||
|
CODEC_ID_MP2,
|
||||||
|
CODEC_ID_MPEG2VIDEO,
|
||||||
|
mpeg_mux_init,
|
||||||
|
mpeg_mux_write_packet,
|
||||||
|
mpeg_mux_end,
|
||||||
|
};
|
||||||
|
|
||||||
#endif //CONFIG_ENCODERS
|
#endif //CONFIG_ENCODERS
|
||||||
|
|
||||||
@ -1535,6 +1550,7 @@ int mpegps_init(void)
|
|||||||
av_register_output_format(&mpeg1vcd_mux);
|
av_register_output_format(&mpeg1vcd_mux);
|
||||||
av_register_output_format(&mpeg2vob_mux);
|
av_register_output_format(&mpeg2vob_mux);
|
||||||
av_register_output_format(&mpeg2svcd_mux);
|
av_register_output_format(&mpeg2svcd_mux);
|
||||||
|
av_register_output_format(&mpeg2dvd_mux);
|
||||||
#endif //CONFIG_ENCODERS
|
#endif //CONFIG_ENCODERS
|
||||||
av_register_input_format(&mpegps_demux);
|
av_register_input_format(&mpegps_demux);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user