diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 00:23:14 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 00:23:14 +0000 |
commit | baaf3f467b850e534cce11f556a48df09f4b666d (patch) | |
tree | 2dd4814990cc8eb1a84789efc1d4863e801484b7 | |
parent | c953e7976ec71c007bdc0aa0316398541eb260aa (diff) | |
download | ffmpeg-baaf3f467b850e534cce11f556a48df09f4b666d.tar.gz |
SVCD scan offset stuff
Originally committed as revision 2660 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 6 | ||||
-rw-r--r-- | libavcodec/avcodec.h | 1 | ||||
-rw-r--r-- | libavcodec/mpeg12.c | 10 | ||||
-rw-r--r-- | libavcodec/mpeg12data.h | 7 |
4 files changed, 23 insertions, 1 deletions
@@ -121,6 +121,7 @@ static int use_aiv = 0; static int use_umv = 0; static int use_alt_scan = 0; static int use_trell = 0; +static int use_scan_offset = 0; static int do_deinterlace = 0; static int do_interlace_dct = 0; static int do_interlace_me = 0; @@ -2399,6 +2400,9 @@ static void opt_output_file(const char *filename) if (use_trell) { video_enc->flags |= CODEC_FLAG_TRELLIS_QUANT; } + if (use_scan_offset) { + video_enc->flags |= CODEC_FLAG_SVCD_SCAN_OFFSET; + } if (b_frames) { video_enc->max_b_frames = b_frames; video_enc->b_frame_strategy = 0; @@ -2906,6 +2910,7 @@ static void opt_target(const char *arg) video_rc_max_rate = 2516000; video_rc_min_rate = 0; //1145000; video_rc_buffer_size = 224*1024*8; + use_scan_offset = 1; audio_bit_rate = 224000; audio_sample_rate = 44100; @@ -3034,6 +3039,7 @@ const OptionDef options[] = { { "umv", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_umv}, "enable Unlimited Motion Vector (h263+)" }, { "alt", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_alt_scan}, "enable alternate scantable (mpeg2)" }, { "trell", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_trell}, "enable trellis quantization" }, + { "scan_offset", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_scan_offset}, "enable SVCD Scan Offset placeholder" }, { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" }, { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" }, { "top", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_top_field_first}, "top=1/bottom=0/auto=-1 field first", "" }, diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3a27a9cd3f..55c9376326 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -267,6 +267,7 @@ static const __attribute__((unused)) int Motion_Est_QTab[] = #define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter #define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 #define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation +#define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< will reserve space for SVCD scan offset user data /* Unsupported options : * Syntax Arithmetic coding (SAC) * Reference Picture Selection diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index bd42790978..b902fd86ee 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -473,6 +473,14 @@ void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number) put_bits(&s->pb, 1, s->progressive_frame); put_bits(&s->pb, 1, 0); //composite_display_flag } + if(s->flags & CODEC_FLAG_SVCD_SCAN_OFFSET){ + int i; + + put_header(s, USER_START_CODE); + for(i=0; i<sizeof(svcd_scan_offset_placeholder); i++){ + put_bits(&s->pb, 8, svcd_scan_offset_placeholder[i]); + } + } s->mb_y=0; ff_mpeg1_encode_slice_header(s); @@ -1809,7 +1817,7 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, static void mpeg_decode_sequence_extension(MpegEncContext *s) { int horiz_size_ext, vert_size_ext; - int bit_rate_ext, vbv_buf_ext; + int bit_rate_ext; int frame_rate_ext_n, frame_rate_ext_d; int level, profile; diff --git a/libavcodec/mpeg12data.h b/libavcodec/mpeg12data.h index 70d23dfb9b..42b3d49a1f 100644 --- a/libavcodec/mpeg12data.h +++ b/libavcodec/mpeg12data.h @@ -433,3 +433,10 @@ static const AVRational mpeg2_aspect[16]={ {0,1}, }; +static const uint8_t svcd_scan_offset_placeholder[14]={ + 0x10, 0x0E, + 0x00, 0x80, 0x81, + 0x00, 0x80, 0x81, + 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, +}; |