mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-25 12:40:01 +00:00
ffmpeg: make 'bits_per_raw_sample' option more useful
Currently bits_per_raw_sample is exposed as an AVCodecContext option. The option is not very useful, because ffmpeg 1) overwrites it with a value from the upstream codec, or 2) it resets the value whenever the video is resampled. This patch adds the -bits_per_raw sample option to FFmpeg, and caches the value like is done for the -pix_fmt option. Example usage: ffmpeg v210.avi -pix_fmt rgb48 -bits_per_raw_sample 10 out%d.dpx Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0e09997fa4
commit
100a6b7c77
5
ffmpeg.c
5
ffmpeg.c
@ -151,6 +151,7 @@ static int frame_height = 0;
|
|||||||
static float frame_aspect_ratio = 0;
|
static float frame_aspect_ratio = 0;
|
||||||
static int frame_aspect_ratio_override = 0;
|
static int frame_aspect_ratio_override = 0;
|
||||||
static enum PixelFormat frame_pix_fmt = PIX_FMT_NONE;
|
static enum PixelFormat frame_pix_fmt = PIX_FMT_NONE;
|
||||||
|
static int frame_bits_per_raw_sample = 0;
|
||||||
static enum AVSampleFormat audio_sample_fmt = AV_SAMPLE_FMT_NONE;
|
static enum AVSampleFormat audio_sample_fmt = AV_SAMPLE_FMT_NONE;
|
||||||
static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX};
|
static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX};
|
||||||
static AVRational frame_rate;
|
static AVRational frame_rate;
|
||||||
@ -2288,7 +2289,7 @@ static int transcode(AVFormatContext **output_files,
|
|||||||
ost->original_height = icodec->height;
|
ost->original_height = icodec->height;
|
||||||
ost->original_width = icodec->width;
|
ost->original_width = icodec->width;
|
||||||
#endif
|
#endif
|
||||||
codec->bits_per_raw_sample= 0;
|
codec->bits_per_raw_sample= frame_bits_per_raw_sample;
|
||||||
}
|
}
|
||||||
ost->resample_height = icodec->height;
|
ost->resample_height = icodec->height;
|
||||||
ost->resample_width = icodec->width;
|
ost->resample_width = icodec->width;
|
||||||
@ -3516,6 +3517,7 @@ static void new_video_stream(AVFormatContext *oc, int file_idx)
|
|||||||
video_enc->height = frame_height;
|
video_enc->height = frame_height;
|
||||||
video_enc->sample_aspect_ratio = av_d2q(frame_aspect_ratio*video_enc->height/video_enc->width, 255);
|
video_enc->sample_aspect_ratio = av_d2q(frame_aspect_ratio*video_enc->height/video_enc->width, 255);
|
||||||
video_enc->pix_fmt = frame_pix_fmt;
|
video_enc->pix_fmt = frame_pix_fmt;
|
||||||
|
video_enc->bits_per_raw_sample = frame_bits_per_raw_sample;
|
||||||
st->sample_aspect_ratio = video_enc->sample_aspect_ratio;
|
st->sample_aspect_ratio = video_enc->sample_aspect_ratio;
|
||||||
|
|
||||||
choose_pixel_fmt(st, codec);
|
choose_pixel_fmt(st, codec);
|
||||||
@ -4315,6 +4317,7 @@ static const OptionDef options[] = {
|
|||||||
{ "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or abbreviation)", "size" },
|
{ "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or abbreviation)", "size" },
|
||||||
{ "aspect", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_aspect_ratio}, "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" },
|
{ "aspect", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_aspect_ratio}, "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" },
|
||||||
{ "pix_fmt", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_frame_pix_fmt}, "set pixel format, 'list' as argument shows all the pixel formats supported", "format" },
|
{ "pix_fmt", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_frame_pix_fmt}, "set pixel format, 'list' as argument shows all the pixel formats supported", "format" },
|
||||||
|
{ "bits_per_raw_sample", OPT_INT | HAS_ARG | OPT_VIDEO, {(void*)&frame_bits_per_raw_sample}, "set the number of bits per raw sample", "number" },
|
||||||
{ "croptop", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
{ "croptop", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
||||||
{ "cropbottom", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
{ "cropbottom", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
||||||
{ "cropleft", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
{ "cropleft", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Removed, use the crop filter instead", "size" },
|
||||||
|
Loading…
Reference in New Issue
Block a user