1 Star 0 Fork 0

pedoc/FFmpeg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
compat
doc
ffbuild
fftools
libavcodec
libavdevice
libavfilter
aarch64
cuda
dnn
metal
opencl
tests
x86
.gitignore
Makefile
aeval.c
af_acontrast.c
af_acopy.c
af_acrossover.c
af_acrusher.c
af_adeclick.c
af_adecorrelate.c
af_adelay.c
af_adenorm.c
af_aderivative.c
af_adynamicequalizer.c
af_adynamicsmooth.c
af_aecho.c
af_aemphasis.c
af_aexciter.c
af_afade.c
af_afftdn.c
af_afftfilt.c
af_afir.c
af_afir.h
af_afirdsp.h
af_aformat.c
af_afreqshift.c
af_afwtdn.c
af_agate.c
af_aiir.c
af_alimiter.c
af_amerge.c
af_amix.c
af_amultiply.c
af_anequalizer.c
af_anlmdn.c
af_anlmdndsp.h
af_anlms.c
af_anull.c
af_apad.c
af_aphaser.c
af_apsyclip.c
af_apulsator.c
af_aresample.c
af_arnndn.c
af_asdr.c
af_asetnsamples.c
af_asetrate.c
af_ashowinfo.c
af_asoftclip.c
af_aspectralstats.c
af_asr.c
af_astats.c
af_asubboost.c
af_asupercut.c
af_atempo.c
af_atilt.c
af_axcorrelate.c
af_biquads.c
af_bs2b.c
af_channelmap.c
af_channelsplit.c
af_chorus.c
af_compand.c
af_compensationdelay.c
af_crossfeed.c
af_crystalizer.c
af_dcshift.c
af_deesser.c
af_dialoguenhance.c
af_drmeter.c
af_dynaudnorm.c
af_earwax.c
af_extrastereo.c
af_firequalizer.c
af_flanger.c
af_haas.c
af_hdcd.c
af_headphone.c
af_join.c
af_ladspa.c
af_loudnorm.c
af_lv2.c
af_mcompand.c
af_pan.c
af_replaygain.c
af_rubberband.c
af_sidechaincompress.c
af_silencedetect.c
af_silenceremove.c
af_sofalizer.c
af_speechnorm.c
af_stereotools.c
af_stereowiden.c
af_superequalizer.c
af_surround.c
af_tremolo.c
af_vibrato.c
af_virtualbass.c
af_volume.c
af_volume.h
af_volumedetect.c
afir_template.c
allfilters.c
asink_anullsink.c
asrc_afirsrc.c
asrc_anoisesrc.c
asrc_anullsrc.c
asrc_flite.c
asrc_hilbert.c
asrc_sinc.c
asrc_sine.c
atadenoise.h
audio.c
audio.h
avf_abitscope.c
avf_ahistogram.c
avf_aphasemeter.c
avf_avectorscope.c
avf_concat.c
avf_showcqt.c
avf_showcqt.h
avf_showfreqs.c
avf_showspatial.c
avf_showspectrum.c
avf_showvolume.c
avf_showwaves.c
avfilter.c
avfilter.h
avfiltergraph.c
avfilterres.rc
bbox.c
bbox.h
blend.h
blend_modes.c
boxblur.c
boxblur.h
bufferqueue.h
buffersink.c
buffersink.h
buffersrc.c
buffersrc.h
bwdif.h
colorchannelmixer_template.c
colorspace.c
colorspace.h
colorspacedsp.c
colorspacedsp.h
colorspacedsp_template.c
colorspacedsp_yuv2yuv_template.c
convolution.h
deshake.h
dnn_filter_common.c
dnn_filter_common.h
dnn_interface.h
drawutils.c
drawutils.h
ebur128.c
ebur128.h
edge_common.c
edge_common.h
f_bench.c
f_cue.c
f_drawgraph.c
f_ebur128.c
f_graphmonitor.c
f_interleave.c
f_latency.c
f_loop.c
f_metadata.c
f_perms.c
f_realtime.c
f_reverse.c
f_segment.c
f_select.c
f_sendcmd.c
f_sidedata.c
f_streamselect.c
f_zmq.c
fflcms2.c
fflcms2.h
fifo.c
file_open.c
filters.h
formats.c
formats.h
framepool.c
framepool.h
framequeue.c
framequeue.h
framerate.h
framesync.c
framesync.h
gblur.h
generate_wave_table.c
generate_wave_table.h
gradfun.h
graphdump.c
graphparser.c
hermite.h
hflip.h
internal.h
lavfutils.c
lavfutils.h
libavfilter.v
limiter.h
log2_tab.c
lswsutils.c
lswsutils.h
lut3d.h
maskedclamp.h
maskedmerge.h
median.h
median_template.c
motion_estimation.c
motion_estimation.h
opencl.c
opencl.h
opencl_source.h
phase_template.c
preserve_color.h
psnr.h
pthread.c
qp_table.c
qp_table.h
qsvvpp.c
qsvvpp.h
removegrain.h
scale_eval.c
scale_eval.h
scene_sad.c
scene_sad.h
setpts.c
settb.c
signature.h
signature_lookup.c
split.c
src_avsynctest.c
src_movie.c
ssim.h
stereo3d.h
thread.h
threshold.h
tinterlace.h
transform.c
transform.h
transpose.h
trim.c
unsharp.h
v360.h
vaapi_vpp.c
vaapi_vpp.h
vaf_spectrumsynth.c
version.c
version.h
version_major.h
vf_addroi.c
vf_alphamerge.c
vf_amplify.c
vf_aspect.c
vf_atadenoise.c
vf_avgblur.c
vf_avgblur_opencl.c
vf_avgblur_vulkan.c
vf_bbox.c
vf_bilateral.c
vf_bitplanenoise.c
vf_blackdetect.c
vf_blackframe.c
vf_blend.c
vf_blend_init.h
vf_blend_vulkan.c
vf_blockdetect.c
vf_blurdetect.c
vf_bm3d.c
vf_boxblur.c
vf_bwdif.c
vf_cas.c
vf_chromaber_vulkan.c
vf_chromakey.c
vf_chromakey_cuda.c
vf_chromakey_cuda.cu
vf_chromanr.c
vf_chromashift.c
vf_ciescope.c
vf_codecview.c
vf_colorbalance.c
vf_colorchannelmixer.c
vf_colorconstancy.c
vf_colorcontrast.c
vf_colorcorrect.c
vf_colorize.c
vf_colorkey.c
vf_colorkey_opencl.c
vf_colorlevels.c
vf_colormap.c
vf_colormatrix.c
vf_colorspace.c
vf_colortemperature.c
vf_convolution.c
vf_convolution_opencl.c
vf_convolve.c
vf_copy.c
vf_coreimage.m
vf_cover_rect.c
vf_crop.c
vf_cropdetect.c
vf_curves.c
vf_datascope.c
vf_dblur.c
vf_dctdnoiz.c
vf_deband.c
vf_deblock.c
vf_decimate.c
vf_dedot.c
vf_deflicker.c
vf_deinterlace_qsv.c
vf_deinterlace_vaapi.c
vf_dejudder.c
vf_delogo.c
vf_derain.c
vf_deshake.c
vf_deshake_opencl.c
vf_despill.c
vf_detelecine.c
vf_displace.c
vf_dnn_classify.c
vf_dnn_detect.c
vf_dnn_processing.c
vf_drawbox.c
vf_drawtext.c
vf_edgedetect.c
vf_elbg.c
vf_entropy.c
vf_epx.c
vf_eq.c
vf_eq.h
vf_estdif.c
vf_exposure.c
vf_extractplanes.c
vf_fade.c
vf_feedback.c
vf_fftdnoiz.c
vf_fftfilt.c
vf_field.c
vf_fieldhint.c
vf_fieldmatch.c
vf_fieldorder.c
vf_fillborders.c
vf_find_rect.c
vf_flip_vulkan.c
vf_floodfill.c
vf_format.c
vf_fps.c
vf_framepack.c
vf_framerate.c
vf_framestep.c
vf_freezedetect.c
vf_freezeframes.c
vf_frei0r.c
vf_fspp.c
vf_fspp.h
vf_gblur.c
vf_gblur_init.h
vf_gblur_vulkan.c
vf_geq.c
vf_gradfun.c
vf_grayworld.c
vf_guided.c
vf_hflip.c
vf_hflip_init.h
vf_histeq.c
vf_histogram.c
vf_hqdn3d.c
vf_hqdn3d.h
vf_hqx.c
vf_hsvkey.c
vf_hue.c
vf_huesaturation.c
vf_hwdownload.c
vf_hwmap.c
vf_hwupload.c
vf_hwupload_cuda.c
vf_hysteresis.c
vf_iccdetect.c
vf_iccgen.c
vf_identity.c
vf_idet.c
vf_idet.h
vf_il.c
vf_kerndeint.c
vf_lagfun.c
vf_lenscorrection.c
vf_lensfun.c
vf_libopencv.c
vf_libplacebo.c
vf_libvmaf.c
vf_limitdiff.c
vf_limiter.c
vf_lumakey.c
vf_lut.c
vf_lut2.c
vf_lut3d.c
vf_maskedclamp.c
vf_maskedmerge.c
vf_maskedminmax.c
vf_maskedthreshold.c
vf_maskfun.c
vf_mcdeint.c
vf_median.c
vf_mergeplanes.c
vf_mestimate.c
vf_midequalizer.c
vf_minterpolate.c
vf_misc_vaapi.c
vf_mix.c
vf_monochrome.c
vf_morpho.c
vf_mpdecimate.c
vf_multiply.c
vf_negate.c
vf_neighbor.c
vf_neighbor_opencl.c
vf_nlmeans.c
vf_nlmeans.h
vf_nlmeans_init.h
vf_nlmeans_opencl.c
vf_nnedi.c
vf_noise.c
vf_noise.h
vf_normalize.c
vf_null.c
vf_ocr.c
vf_overlay.c
vf_overlay.h
vf_overlay_cuda.c
vf_overlay_cuda.cu
vf_overlay_opencl.c
vf_overlay_qsv.c
vf_overlay_vaapi.c
vf_overlay_vulkan.c
vf_owdenoise.c
vf_pad.c
vf_pad_opencl.c
vf_palettegen.c
vf_paletteuse.c
vf_perspective.c
vf_phase.c
vf_photosensitivity.c
vf_pixdesctest.c
vf_pixelize.c
vf_pp.c
vf_pp7.c
vf_pp7.h
vf_premultiply.c
vf_procamp_vaapi.c
vf_program_opencl.c
vf_pseudocolor.c
vf_psnr.c
vf_pullup.c
vf_pullup.h
vf_qp.c
vf_random.c
vf_readeia608.c
vf_readvitc.c
vf_remap.c
vf_remap_opencl.c
vf_removegrain.c
vf_removelogo.c
vf_repeatfields.c
vf_rotate.c
vf_sab.c
vf_scale.c
vf_scale_cuda.c
vf_scale_cuda.cu
vf_scale_cuda.h
vf_scale_npp.c
vf_scale_qsv.c
vf_scale_vaapi.c
vf_scale_vulkan.c
vf_scdet.c
vf_scroll.c
vf_selectivecolor.c
vf_separatefields.c
vf_setparams.c
vf_sharpen_npp.c
vf_shear.c
vf_showinfo.c
vf_showpalette.c
vf_shuffleframes.c
vf_shufflepixels.c
vf_shuffleplanes.c
vf_signalstats.c
vf_signature.c
vf_siti.c
vf_smartblur.c
vf_spp.c
vf_spp.h
vf_sr.c
vf_ssim.c
vf_stack.c
vf_stereo3d.c
vf_subtitles.c
vf_super2xsai.c
vf_swaprect.c
vf_swapuv.c
vf_telecine.c
vf_threshold.c
vf_threshold_init.h
vf_thumbnail.c
vf_thumbnail_cuda.c
vf_thumbnail_cuda.cu
vf_tile.c
vf_tinterlace.c
vf_tmidequalizer.c
vf_tonemap.c
vf_tonemap_opencl.c
vf_tonemap_vaapi.c
vf_tpad.c
vf_transpose.c
vf_transpose_npp.c
vf_transpose_opencl.c
vf_transpose_vaapi.c
vf_transpose_vulkan.c
vf_unsharp.c
vf_unsharp_opencl.c
vf_untile.c
vf_uspp.c
vf_v360.c
vf_vaguedenoiser.c
vf_varblur.c
vf_vectorscope.c
vf_vflip.c
vf_vfrdet.c
vf_vibrance.c
vf_vidstabdetect.c
vf_vidstabtransform.c
vf_vif.c
vf_vignette.c
vf_vmafmotion.c
vf_vpp_qsv.c
vf_w3fdif.c
vf_waveform.c
vf_weave.c
vf_xbr.c
vf_xfade.c
vf_xfade_opencl.c
vf_xmedian.c
vf_yadif.c
vf_yadif_cuda.c
vf_yadif_cuda.cu
vf_yadif_videotoolbox.m
vf_yaepblur.c
vf_zoompan.c
vf_zscale.c
video.c
video.h
vidstabutils.c
vidstabutils.h
vmaf_motion.h
vsink_nullsink.c
vsrc_cellauto.c
vsrc_gradients.c
vsrc_life.c
vsrc_mandelbrot.c
vsrc_mptestsrc.c
vsrc_sierpinski.c
vsrc_testsrc.c
vulkan.c
vulkan.h
vulkan_filter.c
vulkan_filter.h
w3fdif.h
window_func.h
yadif.h
yadif_common.c
libavformat
libavutil
libpostproc
libswresample
libswscale
presets
tests
tools
.gitattributes
.gitignore
.mailmap
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile
README.md
RELEASE
RELEASE_NOTES
configure
克隆/下载
vf_setparams.c 14.78 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* Copyright (c) 2012 Stefano Sabatini
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "config_components.h"
#include "libavutil/pixfmt.h"
#include "libavutil/opt.h"
#include "avfilter.h"
#include "internal.h"
#include "video.h"
enum SetFieldMode {
MODE_AUTO = -1,
MODE_BFF,
MODE_TFF,
MODE_PROG,
};
typedef struct SetParamsContext {
const AVClass *class;
int field_mode;
int color_range;
int color_primaries;
int color_trc;
int colorspace;
} SetParamsContext;
#define OFFSET(x) offsetof(SetParamsContext, x)
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static const AVOption setparams_options[] = {
{"field_mode", "select interlace mode", OFFSET(field_mode), AV_OPT_TYPE_INT, {.i64=MODE_AUTO}, -1, MODE_PROG, FLAGS, "mode"},
{"auto", "keep the same input field", 0, AV_OPT_TYPE_CONST, {.i64=MODE_AUTO}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"bff", "mark as bottom-field-first", 0, AV_OPT_TYPE_CONST, {.i64=MODE_BFF}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"tff", "mark as top-field-first", 0, AV_OPT_TYPE_CONST, {.i64=MODE_TFF}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"prog", "mark as progressive", 0, AV_OPT_TYPE_CONST, {.i64=MODE_PROG}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"range", "select color range", OFFSET(color_range), AV_OPT_TYPE_INT, {.i64=-1},-1, AVCOL_RANGE_NB-1, FLAGS, "range"},
{"auto", "keep the same color range", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, FLAGS, "range"},
{"unspecified", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, FLAGS, "range"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, FLAGS, "range"},
{"limited", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"tv", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"mpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"full", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{"pc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{"jpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{"color_primaries", "select color primaries", OFFSET(color_primaries), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_PRI_NB-1, FLAGS, "color_primaries"},
{"auto", "keep the same color primaries", 0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"bt709", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_BT709}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_UNSPECIFIED}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"bt470m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_BT470M}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"bt470bg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_BT470BG}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"smpte170m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE170M}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"smpte240m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE240M}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"film", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_FILM}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"bt2020", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_BT2020}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"smpte428", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE428}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"smpte431", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE431}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"smpte432", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE432}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"jedec-p22", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_JEDEC_P22}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"ebu3213", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_EBU3213}, INT_MIN, INT_MAX, FLAGS, "color_primaries"},
{"color_trc", "select color transfer", OFFSET(color_trc), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_TRC_NB-1, FLAGS, "color_trc"},
{"auto", "keep the same color transfer", 0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt709", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_BT709}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_UNSPECIFIED}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt470m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_GAMMA22}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt470bg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_GAMMA28}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"smpte170m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_SMPTE170M}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"smpte240m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_SMPTE240M}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"linear", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_LINEAR}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"log100", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_LOG}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"log316", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_LOG_SQRT}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"iec61966-2-4", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_IEC61966_2_4}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt1361e", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_BT1361_ECG}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"iec61966-2-1", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_IEC61966_2_1}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt2020-10", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_BT2020_10}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"bt2020-12", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_BT2020_12}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"smpte2084", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_SMPTE2084}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"smpte428", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_SMPTE428}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"arib-std-b67", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_TRC_ARIB_STD_B67}, INT_MIN, INT_MAX, FLAGS, "color_trc"},
{"colorspace", "select colorspace", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_SPC_NB-1, FLAGS, "colorspace"},
{"auto", "keep the same colorspace", 0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"gbr", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_RGB}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"bt709", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_BT709}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_UNSPECIFIED}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"fcc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_FCC}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"bt470bg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_BT470BG}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"smpte170m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_SMPTE170M}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"smpte240m", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_SMPTE240M}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"ycgco", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_YCGCO}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"bt2020nc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_BT2020_NCL}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"bt2020c", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_BT2020_CL}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"smpte2085", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_SMPTE2085}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"chroma-derived-nc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_CHROMA_DERIVED_NCL},INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"chroma-derived-c", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_CHROMA_DERIVED_CL}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{"ictcp", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_SPC_ICTCP}, INT_MIN, INT_MAX, FLAGS, "colorspace"},
{NULL}
};
AVFILTER_DEFINE_CLASS(setparams);
static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
{
AVFilterContext *ctx = inlink->dst;
SetParamsContext *s = ctx->priv;
/* set field */
if (s->field_mode == MODE_PROG) {
frame->interlaced_frame = 0;
} else if (s->field_mode != MODE_AUTO) {
frame->interlaced_frame = 1;
frame->top_field_first = s->field_mode;
}
/* set range */
if (s->color_range >= 0)
frame->color_range = s->color_range;
/* set color prim, trc, space */
if (s->color_primaries >= 0)
frame->color_primaries = s->color_primaries;
if (s->color_trc >= 0)
frame->color_trc = s->color_trc;
if (s->colorspace >= 0)
frame->colorspace = s->colorspace;
return ff_filter_frame(ctx->outputs[0], frame);
}
static const AVFilterPad inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.filter_frame = filter_frame,
},
};
static const AVFilterPad outputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
},
};
const AVFilter ff_vf_setparams = {
.name = "setparams",
.description = NULL_IF_CONFIG_SMALL("Force field, or color property for the output video frame."),
.priv_size = sizeof(SetParamsContext),
.priv_class = &setparams_class,
.flags = AVFILTER_FLAG_METADATA_ONLY,
FILTER_INPUTS(inputs),
FILTER_OUTPUTS(outputs),
};
#if CONFIG_SETRANGE_FILTER
static const AVOption setrange_options[] = {
{"range", "select color range", OFFSET(color_range), AV_OPT_TYPE_INT, {.i64=-1},-1, AVCOL_RANGE_NB-1, FLAGS, "range"},
{"auto", "keep the same color range", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, FLAGS, "range"},
{"unspecified", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, FLAGS, "range"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, FLAGS, "range"},
{"limited", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"tv", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"mpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range"},
{"full", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{"pc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{"jpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range"},
{NULL}
};
AVFILTER_DEFINE_CLASS(setrange);
static av_cold int init_setrange(AVFilterContext *ctx)
{
SetParamsContext *s = ctx->priv;
s->field_mode = MODE_AUTO;/* set field mode to auto */
s->color_primaries = -1;
s->color_trc = -1;
s->colorspace = -1;
return 0;
}
const AVFilter ff_vf_setrange = {
.name = "setrange",
.description = NULL_IF_CONFIG_SMALL("Force color range for the output video frame."),
.priv_size = sizeof(SetParamsContext),
.init = init_setrange,
.priv_class = &setrange_class,
.flags = AVFILTER_FLAG_METADATA_ONLY,
FILTER_INPUTS(inputs),
FILTER_OUTPUTS(outputs),
};
#endif /* CONFIG_SETRANGE_FILTER */
#if CONFIG_SETFIELD_FILTER
static const AVOption setfield_options[] = {
{"mode", "select interlace mode", OFFSET(field_mode), AV_OPT_TYPE_INT, {.i64=MODE_AUTO}, -1, MODE_PROG, FLAGS, "mode"},
{"auto", "keep the same input field", 0, AV_OPT_TYPE_CONST, {.i64=MODE_AUTO}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"bff", "mark as bottom-field-first", 0, AV_OPT_TYPE_CONST, {.i64=MODE_BFF}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"tff", "mark as top-field-first", 0, AV_OPT_TYPE_CONST, {.i64=MODE_TFF}, INT_MIN, INT_MAX, FLAGS, "mode"},
{"prog", "mark as progressive", 0, AV_OPT_TYPE_CONST, {.i64=MODE_PROG}, INT_MIN, INT_MAX, FLAGS, "mode"},
{NULL}
};
AVFILTER_DEFINE_CLASS(setfield);
static av_cold int init_setfield(AVFilterContext *ctx)
{
SetParamsContext *s = ctx->priv;
s->color_range = -1;/* set range mode to auto */
s->color_primaries = -1;
s->color_trc = -1;
s->colorspace = -1;
return 0;
}
const AVFilter ff_vf_setfield = {
.name = "setfield",
.description = NULL_IF_CONFIG_SMALL("Force field for the output video frame."),
.priv_size = sizeof(SetParamsContext),
.init = init_setfield,
.priv_class = &setfield_class,
.flags = AVFILTER_FLAG_METADATA_ONLY,
FILTER_INPUTS(inputs),
FILTER_OUTPUTS(outputs),
};
#endif /* CONFIG_SETFIELD_FILTER */
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/pedoc/ffmpeg.git
git@gitee.com:pedoc/ffmpeg.git
pedoc
ffmpeg
FFmpeg
n5.1.2

搜索帮助