diff options
Diffstat (limited to 'libhb/handbrake')
41 files changed, 14141 insertions, 0 deletions
diff --git a/libhb/handbrake/audio_remap.h b/libhb/handbrake/audio_remap.h new file mode 100644 index 000000000..d8f1ed3b6 --- /dev/null +++ b/libhb/handbrake/audio_remap.h @@ -0,0 +1,104 @@ +/* audio_remap.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/> + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +/* This file handles the following two scenarios: + * + * 1) remapping audio from decoder order to libav order (for downmixing) + * + * 2) remapping audio from libav order to encoder order (for encoding) + * + * We only need to support: + * + * a) channels found in our non-libavcodec audio decoders' layouts + * b) channels found in HB_AMIXDOWN_* layouts + * + * We consider that: + * + * Left/Right Surround == Side Left/Right + * Left/Right Rear Surround == Back Left/Right */ + +#ifndef AUDIO_REMAP_H +#define AUDIO_REMAP_H + +#include <stdint.h> +#include "libavutil/samplefmt.h" + +/* we only need to support the 11 "most common" channels */ +#define HB_AUDIO_REMAP_MAX_CHANNELS 11 + +typedef struct +{ + uint64_t channel_order_map[HB_AUDIO_REMAP_MAX_CHANNELS + 1]; +} hb_chan_map_t; + +typedef struct +{ + int nchannels; + int remap_needed; + hb_chan_map_t *channel_map_in; + hb_chan_map_t *channel_map_out; + int table[HB_AUDIO_REMAP_MAX_CHANNELS]; + + void (*remap)(uint8_t **samples, int nsamples, + int nchannels, int *remap_table); +} hb_audio_remap_t; + +/* + * Predefined channel maps for common channel orders. + */ +extern hb_chan_map_t hb_libav_chan_map; +extern hb_chan_map_t hb_liba52_chan_map; +extern hb_chan_map_t hb_vorbis_chan_map; +extern hb_chan_map_t hb_aac_chan_map; + +/* + * Initialize an hb_audio_remap_t to remap audio with the specified sample + * format, from the input to the output channel order (indicated by + * channel_map_in and channel_map_out, respectively). + */ +hb_audio_remap_t* hb_audio_remap_init(enum AVSampleFormat sample_fmt, + hb_chan_map_t *channel_map_out, + hb_chan_map_t *channel_map_in); + +/* + * Updates an hb_audio_remap_t's number of channels and remap table to work with + * the specified channel layout. + * + * Must be called at least once before remapping. + */ +void hb_audio_remap_set_channel_layout(hb_audio_remap_t *remap, + uint64_t channel_layout); + +/* + * Free an hb_audio_remap_t. + */ +void hb_audio_remap_free(hb_audio_remap_t *remap); + +/* + * Remap audio between 2 different channel orders, using the settings specified + * in the remap parameter. Remapping is only done when necessary. + * + * The remap parameter can be NULL (no remapping). + */ +void hb_audio_remap(hb_audio_remap_t *remap, uint8_t **samples, + int nsamples); + +/* + * Generate a table used to remap audio between 2 different channel orders. + * + * Usage: output_sample[channel_idx] = input_sample[remap_table[channel_idx]] + * + * remap_table is allocated by the caller. + */ +void hb_audio_remap_build_table(hb_chan_map_t *channel_map_out, + hb_chan_map_t *channel_map_in, + uint64_t channel_layout, + int *remap_table); + +#endif /* AUDIO_REMAP_H */ diff --git a/libhb/handbrake/audio_resample.h b/libhb/handbrake/audio_resample.h new file mode 100644 index 000000000..103237758 --- /dev/null +++ b/libhb/handbrake/audio_resample.h @@ -0,0 +1,120 @@ +/* audio_resample.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/> + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +/* Implements a libswresample wrapper for convenience. + * + * Supports sample_fmt and channel_layout conversion. + * + * sample_rate conversion will come later (libswresample doesn't support + * sample_rate conversion with float samples yet). */ + +#ifndef AUDIO_RESAMPLE_H +#define AUDIO_RESAMPLE_H + +#include <math.h> +#include <stdint.h> +#include "libavutil/channel_layout.h" +#include "libswresample/swresample.h" + +/* Default mix level for center and surround channels */ +#define HB_MIXLEV_DEFAULT ((double)M_SQRT1_2) +/* Default mix level for LFE channel */ +#define HB_MIXLEV_ZERO ((double)0.0) + +typedef struct +{ + int dual_mono_downmix; + int dual_mono_right_only; + + int resample_needed; + SwrContext *swresample; + + struct + { + int sample_rate; + uint64_t channel_layout; + double lfe_mix_level; + double center_mix_level; + double surround_mix_level; + enum AVSampleFormat sample_fmt; + } in; + + struct + { + int sample_rate; + int channels; + uint64_t channel_layout; + double lfe_mix_level; + double center_mix_level; + double surround_mix_level; + enum AVSampleFormat sample_fmt; + } resample; + + struct + { + int sample_rate; + int channels; + int sample_size; + uint64_t channel_layout; + enum AVSampleFormat sample_fmt; + enum AVMatrixEncoding matrix_encoding; + double maxval; + } out; +} hb_audio_resample_t; + +/* Initialize an hb_audio_resample_t for converting audio to the requested + * sample_fmt and mixdown. + * + * Also sets the default audio input characteristics, so that they are the same + * as the output characteristics (no conversion needed). + */ +hb_audio_resample_t* hb_audio_resample_init(enum AVSampleFormat sample_fmt, + int sample_rate, + int hb_amixdown, int normalize_mix); + +/* The following functions set the audio input characteristics. + * + * They should be called whenever the relevant characteristic(s) differ from the + * requested output characteristics, or if they may have changed in the source. + */ + +void hb_audio_resample_set_channel_layout(hb_audio_resample_t *resample, + uint64_t channel_layout); + +void hb_audio_resample_set_mix_levels(hb_audio_resample_t *resample, + double surround_mix_level, + double center_mix_level, + double lfe_mix_level); + +void hb_audio_resample_set_sample_fmt(hb_audio_resample_t *resample, + enum AVSampleFormat sample_fmt); + +void hb_audio_resample_set_sample_rate(hb_audio_resample_t *resample, + int sample_rate); + +/* Update an hb_audio_resample_t. + * + * Must be called after using any of the above functions. + */ +int hb_audio_resample_update(hb_audio_resample_t *resample); + +/* Free an hb_audio_remsample_t. */ +void hb_audio_resample_free(hb_audio_resample_t *resample); + +/* Convert input samples to the requested output characteristics + * (sample_fmt and channel_layout + matrix_encoding). + * + * Returns an hb_buffer_t with the converted output. + * + * resampling is only done when necessary. + */ +hb_buffer_t* hb_audio_resample(hb_audio_resample_t *resample, + const uint8_t **samples, int nsamples); + +#endif /* AUDIO_RESAMPLE_H */ diff --git a/libhb/handbrake/avfilter_priv.h b/libhb/handbrake/avfilter_priv.h new file mode 100644 index 000000000..20e616cc2 --- /dev/null +++ b/libhb/handbrake/avfilter_priv.h @@ -0,0 +1,34 @@ +/* avfilter_priv.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_AVFILTER_PRIV_H +#define HB_AVFILTER_PRIV_H + +#include "libavfilter/avfilter.h" +#include "handbrake/hbavfilter.h" + +struct hb_filter_private_s +{ + int initialized; + hb_avfilter_graph_t * graph; + + // Buffer list to delay output by one frame. Required to set stop time. + hb_buffer_list_t list; + + // Placeholder settings for AVFilter aliases + hb_value_t * avfilters; + hb_filter_init_t input; + hb_filter_init_t output; +}; + +int hb_avfilter_null_work( hb_filter_object_t * filter, + hb_buffer_t ** buf_in, hb_buffer_t ** buf_out ); +void hb_avfilter_alias_close( hb_filter_object_t * filter ); + +#endif // HB_AVFILTER_PRIV_H diff --git a/libhb/handbrake/bits.h b/libhb/handbrake/bits.h new file mode 100644 index 000000000..8785f4b5c --- /dev/null +++ b/libhb/handbrake/bits.h @@ -0,0 +1,90 @@ +/* bits.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_BITS_H +#define HB_BITS_H + +static inline int +allbits_set(uint32_t *bitmap, int num_words) +{ + unsigned int i; + for( i = 0; i < num_words; i++ ) + { + if( bitmap[i] != 0xFFFFFFFF ) + return (0); + } + return (1); +} + +static inline int +bit_is_set( uint32_t *bit_map, int bit_pos ) +{ + return( ( bit_map[bit_pos >> 5] & (0x1 << (bit_pos & 0x1F) ) ) != 0 ); +} + +static inline int +bit_is_clear( uint32_t *bit_map, int bit_pos ) +{ + return( ( bit_map[bit_pos >> 5] & ( 0x1 << (bit_pos & 0x1F) ) ) == 0 ); +} + +static inline void +bit_set( uint32_t *bit_map, int bit_pos ) +{ + bit_map[bit_pos >> 5] |= 0x1 << (bit_pos & 0x1F); +} + +static inline void +bit_clear(uint32_t *bit_map, int bit_pos) +{ + bit_map[bit_pos >> 5] &= ~( 0x1 << ( bit_pos & 0x1F ) ); +} + +static inline void +bit_nclear(uint32_t *bit_map, int start_pos, int stop_pos) +{ + int start_word = start_pos >> 5; + int stop_word = stop_pos >> 5; + + if ( start_word == stop_word ) + { + + bit_map[start_word] &= ( ( 0x7FFFFFFF >> ( 31 - (start_pos & 0x1F ) ) ) + | ( 0xFFFFFFFE << ( stop_pos & 0x1F ) ) ); + } + else + { + bit_map[start_word] &= ( 0x7FFFFFFF >> ( 31 - ( start_pos & 0x1F ) ) ); + while (++start_word < stop_word) + bit_map[start_word] = 0; + bit_map[stop_word] &= 0xFFFFFFFE << ( stop_pos & 0x1F ); + } +} + +static inline void +bit_nset(uint32_t *bit_map, int start_pos, int stop_pos) +{ + int start_word = start_pos >> 5; + int stop_word = stop_pos >> 5; + + if ( start_word == stop_word ) + { + bit_map[start_word] |= ( ( 0xFFFFFFFF << ( start_pos & 0x1F ) ) + & ( 0xFFFFFFFF >> ( 31 - ( stop_pos & 0x1F ) ) ) ); + } + else + { + bit_map[start_word] |= 0xFFFFFFFF << ( start_pos & 0x1F ); + while (++start_word < stop_word) + bit_map[start_word] = 0xFFFFFFFF; + bit_map[stop_word] |= 0xFFFFFFFF >> ( 31 - ( stop_pos & 0x1F ) ); + } +} + +#endif /* HB_BITS_H */ diff --git a/libhb/handbrake/colormap.h b/libhb/handbrake/colormap.h new file mode 100644 index 000000000..7ea9ac57c --- /dev/null +++ b/libhb/handbrake/colormap.h @@ -0,0 +1,20 @@ +/* colormap.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_COLORMAP_H +#define HB_COLORMAP_H + +#define HB_RGB_TO_BGR(c) (((c & 0xff0000) >> 16) | \ + ((c & 0x00ff00) ) | \ + ((c & 0x0000ff) << 16)) +#define HB_BGR_TO_RGB(c) HB_RGB_TO_BGR(c) + +uint32_t hb_rgb_lookup_by_name(const char *color); + +#endif // HB_COLORMAP_H diff --git a/libhb/handbrake/common.h b/libhb/handbrake/common.h new file mode 100644 index 000000000..8ab21fa8a --- /dev/null +++ b/libhb/handbrake/common.h @@ -0,0 +1,1446 @@ +/* common.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_COMMON_H +#define HB_COMMON_H + +#include "handbrake/project.h" +#include "handbrake/hbtypes.h" +#include "handbrake/hb_dict.h" +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <unistd.h> +#include <inttypes.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <dirent.h> + +/* + * It seems WinXP doesn't align the stack of new threads to 16 bytes. + * To prevent crashes in SSE functions, we need to force stack alignment + * of new threads. + */ +#if defined( __GNUC__ ) && (defined( _WIN32 ) || defined( __MINGW32__ )) +# define attribute_align_thread __attribute__((force_align_arg_pointer)) +#else +# define attribute_align_thread +#endif + +#if defined( __GNUC__ ) && !(defined( _WIN32 ) || defined( __MINGW32__ )) +# define HB_WPRINTF(s,v) __attribute__((format(printf,s,v))) +#else +# define HB_WPRINTF(s,v) +#endif + +#if defined( SYS_MINGW ) +# define fseek fseeko64 +# define ftell ftello64 +# undef fseeko +# define fseeko fseeko64 +# undef ftello +# define ftello ftello64 +# define flockfile(...) +# define funlockfile(...) +# define getc_unlocked getc +# undef off_t +# define off_t off64_t +#endif + +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef ABS +#define ABS(a) ((a) > 0 ? (a) : (-(a))) +#endif + +#define HB_ALIGN(x, a) (((x)+(a)-1)&~((a)-1)) + +#ifndef HB_DEBUG_ASSERT +#define HB_DEBUG_ASSERT(x, y) { if ((x)) { hb_error("ASSERT: %s", y); exit(1); } } +#endif + +#define EVEN( a ) ((a) + ((a) & 1)) +#define MULTIPLE_MOD(a, b) (((b) * (int)(((a) + ((b) / 2)) / (b)))) +#define MULTIPLE_MOD_UP(a, b) (((b) * (int)(((a) + ((b) - 1)) / (b)))) +#define MULTIPLE_MOD_DOWN(a, b) (((b) * (int)((a) / (b)))) + +#define HB_DVD_READ_BUFFER_SIZE 2048 + +#define HB_MIN_WIDTH 32 +#define HB_MIN_HEIGHT 32 +#define HB_MAX_WIDTH 20480 +#define HB_MAX_HEIGHT 20480 + +typedef enum +{ + HB_ERROR_NONE = 0, + HB_ERROR_CANCELED = 1, + HB_ERROR_WRONG_INPUT = 2, + HB_ERROR_INIT = 3, + HB_ERROR_UNKNOWN = 4, + HB_ERROR_READ = 5 +} hb_error_code; + +#include "ports.h" +#ifdef __LIBHB__ +#include "internal.h" +#define PRIVATE +#else +#define PRIVATE const +#endif +#include "audio_remap.h" +#include "libavutil/channel_layout.h" + +#if HB_PROJECT_FEATURE_QSV +#include "qsv_libav.h" +#endif + +struct hb_buffer_list_s +{ + hb_buffer_t *head; + hb_buffer_t *tail; + int count; + int size; +}; + +void hb_buffer_list_append(hb_buffer_list_t *list, hb_buffer_t *buf); +void hb_buffer_list_prepend(hb_buffer_list_t *list, hb_buffer_t *buf); +hb_buffer_t* hb_buffer_list_head(hb_buffer_list_t *list); +hb_buffer_t* hb_buffer_list_rem_head(hb_buffer_list_t *list); +hb_buffer_t* hb_buffer_list_tail(hb_buffer_list_t *list); +hb_buffer_t* hb_buffer_list_rem_tail(hb_buffer_list_t *list); +hb_buffer_t* hb_buffer_list_rem(hb_buffer_list_t *list, hb_buffer_t * b); +hb_buffer_t* hb_buffer_list_clear(hb_buffer_list_t *list); +hb_buffer_t* hb_buffer_list_set(hb_buffer_list_t *list, hb_buffer_t *buf); +void hb_buffer_list_close(hb_buffer_list_t *list); +int hb_buffer_list_count(hb_buffer_list_t *list); +int hb_buffer_list_size(hb_buffer_list_t *list); + +hb_list_t * hb_list_init(void); +int hb_list_count( const hb_list_t * ); +void hb_list_add( hb_list_t *, void * ); +void hb_list_insert( hb_list_t * l, int pos, void * p ); +void hb_list_rem( hb_list_t *, void * ); +void * hb_list_item( const hb_list_t *, int ); +void hb_list_close( hb_list_t ** ); + +void hb_reduce( int *x, int *y, int num, int den ); +void hb_limit_rational( int *x, int *y, int num, int den, int limit ); +void hb_reduce64( int64_t *x, int64_t *y, int64_t num, int64_t den ); +void hb_limit_rational64( int64_t *x, int64_t *y, int64_t num, int64_t den, int64_t limit ); + +#define HB_KEEP_WIDTH 0x01 +#define HB_KEEP_HEIGHT 0x02 +#define HB_KEEP_DISPLAY_ASPECT 0x04 + +void hb_job_set_encoder_preset (hb_job_t *job, const char *preset); +void hb_job_set_encoder_tune (hb_job_t *job, const char *tune); +void hb_job_set_encoder_options(hb_job_t *job, const char *options); +void hb_job_set_encoder_profile(hb_job_t *job, const char *profile); +void hb_job_set_encoder_level (hb_job_t *job, const char *level); +void hb_job_set_file (hb_job_t *job, const char *file); + +hb_audio_t *hb_audio_copy(const hb_audio_t *src); +hb_list_t *hb_audio_list_copy(const hb_list_t *src); +void hb_audio_close(hb_audio_t **audio); +void hb_audio_config_init(hb_audio_config_t * audiocfg); +int hb_audio_add(const hb_job_t * job, const hb_audio_config_t * audiocfg); +hb_audio_config_t * hb_list_audio_config_item(hb_list_t * list, int i); + +int hb_subtitle_add_ssa_header(hb_subtitle_t *subtitle, const char *font, + int fs, int width, int height); +hb_subtitle_t *hb_subtitle_copy(const hb_subtitle_t *src); +hb_list_t *hb_subtitle_list_copy(const hb_list_t *src); +void hb_subtitle_close( hb_subtitle_t **sub ); +int hb_subtitle_add(const hb_job_t * job, const hb_subtitle_config_t * subtitlecfg, int track); +int hb_import_subtitle_add( const hb_job_t * job, + const hb_subtitle_config_t * subtitlecfg, + const char *lang_code, int source ); +int hb_srt_add(const hb_job_t * job, const hb_subtitle_config_t * subtitlecfg, + const char *lang); +int hb_subtitle_can_force( int source ); +int hb_subtitle_can_burn( int source ); +int hb_subtitle_can_pass( int source, int mux ); + +int hb_audio_can_apply_drc(uint32_t codec, uint32_t codec_param, int encoder); +int hb_audio_can_apply_drc2(hb_handle_t *h, int title_idx, + int audio_idx, int encoder); + +hb_attachment_t *hb_attachment_copy(const hb_attachment_t *src); + +hb_list_t *hb_attachment_list_copy(const hb_list_t *src); +void hb_attachment_close(hb_attachment_t **attachment); + +hb_metadata_t * hb_metadata_init(void); +hb_metadata_t * hb_metadata_copy(const hb_metadata_t *src); +void hb_metadata_close(hb_metadata_t **metadata); +void hb_metadata_set_name( hb_metadata_t *metadata, const char *name ); +void hb_metadata_set_artist( hb_metadata_t *metadata, const char *artist ); +void hb_metadata_set_composer( hb_metadata_t *metadata, const char *composer ); +void hb_metadata_set_release_date( hb_metadata_t *metadata, const char *release_date ); +void hb_metadata_set_comment( hb_metadata_t *metadata, const char *comment ); +void hb_metadata_set_genre( hb_metadata_t *metadata, const char *genre ); +void hb_metadata_set_album( hb_metadata_t *metadata, const char *album ); +void hb_metadata_set_album_artist( hb_metadata_t *metadata, const char *album_artist ); +void hb_metadata_set_description( hb_metadata_t *metadata, const char *description ); +void hb_metadata_set_long_description( hb_metadata_t *metadata, const char *long_description ); +void hb_metadata_add_coverart( hb_metadata_t *metadata, const uint8_t *data, int size, int type ); +void hb_metadata_rem_coverart( hb_metadata_t *metadata, int ii ); + +hb_chapter_t *hb_chapter_copy(const hb_chapter_t *src); +hb_list_t *hb_chapter_list_copy(const hb_list_t *src); +void hb_chapter_close(hb_chapter_t **chapter); +void hb_chapter_set_title(hb_chapter_t *chapter, const char *title); + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_rate_s.cs when changing this struct +struct hb_rate_s +{ + const char *name; + int rate; +}; + +struct hb_dither_s +{ + const char *description; + const char *short_name; + int method; +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_mixdown_s.cs when changing this struct +struct hb_mixdown_s +{ + const char *name; + const char *short_name; + int amixdown; +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_encoder_s.cs when changing this struct +struct hb_encoder_s +{ + const char *name; // note: used in presets + const char *short_name; // note: used in CLI + const char *long_name; // used in log + int codec; // HB_*CODEC_* define + int muxers; // supported muxers +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_container_s.cs when changing this struct +struct hb_container_s +{ + const char *name; + const char *short_name; + const char *long_name; + const char *default_extension; + int format; +}; + +struct hb_rational_s +{ + int num; + int den; +}; + +struct hb_geometry_s +{ + int width; + int height; + hb_rational_t par; +}; + +struct hb_geometry_settings_s +{ + int mode; // Anamorphic mode, see job struct anamorphic + int keep; // Specifies settings that shouldn't be changed + int itu_par; // use dvd dimensions to determine PAR + int modulus; // pixel alignment for loose anamorphic + int crop[4]; // Pixels cropped from source before scaling + int maxWidth; // max destination storage width + int maxHeight; // max destination storage height + hb_geometry_t geometry; +}; + +// Update win/CS/HandBrake.Interop/Interop/HbLib/hb_image_s.cs when changing this struct +struct hb_image_s +{ + int format; + int max_plane; + int width; + int height; + uint8_t *data; + + struct image_plane + { + uint8_t *data; + int width; + int height; + int stride; + int height_stride; + int size; + } plane[4]; +}; + +void hb_image_close(hb_image_t **_image); + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_subtitle_config_s.cs when changing this struct +struct hb_subtitle_config_s +{ + enum subdest { RENDERSUB, PASSTHRUSUB } dest; + int force; + int default_track; + const char * name; + + /* SRT subtitle tracks only */ + const char * src_filename; + char src_codeset[40]; + int64_t offset; +}; + +/******************************************************************************* + * Lists of rates, mixdowns, encoders etc. + ******************************************************************************* + * + * Use hb_*_get_next() to get the next list item (use NULL to get the first). + * + * Use hb_*_get_from_name() to get the value corresponding to a name. + * The name can be either the short or full name. + * Legacy names are sanitized to currently-supported values whenever possible. + * Returns 0 or -1 if no value could be found. + * + * Use hb_*_get_name() and hb_*_get_short_name() to get the corresponding value. + * Returns NULL if the value is invalid. + * + * Use hb_*_get_long_name() when the name is not descriptive enough for you. + * + * hb_*_sanitize_name() are convenience functions for use when dealing + * with full names (e.g. to translate legacy values while loading a preset). + * + * Names are case-insensitive; libhb will ensure that the lists do not contain + * more than one entry with the same name. + * + * Use hb_*_get_limits() to get the minimum/maximum for lists with numerically + * ordered values. + * + * Use hb_*_get_best() to sanitize a value based on other relevant parameters. + * + * Use hb_*_get_default() to get the default based on other relevant parameters. + * + */ + +void hb_common_global_init(int); + +int hb_video_framerate_get_from_name(const char *name); +const char* hb_video_framerate_get_name(int framerate); +const char* hb_video_framerate_sanitize_name(const char *name); +void hb_video_framerate_get_limits(int *low, int *high, int *clock); +const hb_rate_t* hb_video_framerate_get_next(const hb_rate_t *last); +int hb_video_framerate_get_close(hb_rational_t *framerate, + double thresh); + +int hb_audio_samplerate_is_supported(int samplerate, + uint32_t codec); +int hb_audio_samplerate_find_closest(int samplerate, + uint32_t codec); +int hb_audio_samplerate_get_sr_shift(int samplerate); +int hb_audio_samplerate_get_from_name(const char *name); +const char* hb_audio_samplerate_get_name(int samplerate); +const hb_rate_t* hb_audio_samplerate_get_next(const hb_rate_t *last); +const hb_rate_t* hb_audio_samplerate_get_next_for_codec(const hb_rate_t *last, + uint32_t codec); + +int hb_audio_bitrate_get_best(uint32_t codec, int bitrate, int samplerate, int mixdown); +int hb_audio_bitrate_get_default(uint32_t codec, int samplerate, int mixdown); +void hb_audio_bitrate_get_limits(uint32_t codec, int samplerate, int mixdown, int *low, int *high); +const hb_rate_t* hb_audio_bitrate_get_next(const hb_rate_t *last); + +void hb_video_quality_get_limits(uint32_t codec, float *low, float *high, float *granularity, int *direction); +const char* hb_video_quality_get_name(uint32_t codec); + +int hb_video_encoder_get_depth (int encoder); +const char* const* hb_video_encoder_get_presets (int encoder); +const char* const* hb_video_encoder_get_tunes (int encoder); +const char* const* hb_video_encoder_get_profiles(int encoder); +const char* const* hb_video_encoder_get_levels (int encoder); + +void hb_audio_quality_get_limits(uint32_t codec, float *low, float *high, float *granularity, int *direction); +float hb_audio_quality_get_best(uint32_t codec, float quality); +float hb_audio_quality_get_default(uint32_t codec); + +void hb_audio_compression_get_limits(uint32_t codec, float *low, float *high, float *granularity, int *direction); +float hb_audio_compression_get_best(uint32_t codec, float compression); +float hb_audio_compression_get_default(uint32_t codec); + +int hb_audio_dither_get_default(void); +int hb_audio_dither_get_default_method(void); // default method, if enabled && supported +int hb_audio_dither_is_supported(uint32_t codec); +int hb_audio_dither_get_from_name(const char *name); +const char* hb_audio_dither_get_description(int method); +const hb_dither_t* hb_audio_dither_get_next(const hb_dither_t *last); + +int hb_mixdown_is_supported(int mixdown, uint32_t codec, uint64_t layout); +int hb_mixdown_has_codec_support(int mixdown, uint32_t codec); +int hb_mixdown_has_remix_support(int mixdown, uint64_t layout); +int hb_mixdown_get_discrete_channel_count(int mixdown); +int hb_mixdown_get_low_freq_channel_count(int mixdown); +int hb_mixdown_get_best(uint32_t codec, uint64_t layout, int mixdown); +int hb_mixdown_get_default(uint32_t codec, uint64_t layout); +hb_mixdown_t* hb_mixdown_get_from_mixdown(int mixdown); +int hb_mixdown_get_from_name(const char *name); +const char* hb_mixdown_get_name(int mixdown); +const char* hb_mixdown_get_short_name(int mixdown); +const char* hb_mixdown_sanitize_name(const char *name); +const hb_mixdown_t* hb_mixdown_get_next(const hb_mixdown_t *last); + +void hb_layout_get_name(char * name, int size, int64_t layout); +int hb_layout_get_discrete_channel_count(int64_t layout); +int hb_layout_get_low_freq_channel_count(int64_t layout); + +int hb_video_encoder_get_default(int muxer); +hb_encoder_t* hb_video_encoder_get_from_codec(int codec); +int hb_video_encoder_get_from_name(const char *name); +const char* hb_video_encoder_get_name(int encoder); +const char* hb_video_encoder_get_short_name(int encoder); +const char* hb_video_encoder_get_long_name(int encoder); +const char* hb_video_encoder_sanitize_name(const char *name); +const hb_encoder_t* hb_video_encoder_get_next(const hb_encoder_t *last); + +/* + * hb_audio_encoder_get_fallback_for_passthru() will sanitize a passthru codec + * to the matching audio encoder (if any is available). + * + * hb_audio_encoder_get_from_name(), hb_audio_encoder_sanitize_name() will + * sanitize legacy encoder names, but won't convert passthru to an encoder. + */ +int hb_audio_encoder_get_fallback_for_passthru(int passthru); +int hb_audio_encoder_get_default(int muxer); +hb_encoder_t* hb_audio_encoder_get_from_codec(int codec); +int hb_audio_encoder_get_from_name(const char *name); +const char* hb_audio_encoder_get_name(int encoder); +const char* hb_audio_encoder_get_short_name(int encoder); +const char* hb_audio_encoder_get_long_name(int encoder); +const char* hb_audio_encoder_sanitize_name(const char *name); +const hb_encoder_t* hb_audio_encoder_get_next(const hb_encoder_t *last); + +const char* hb_audio_decoder_get_name(int codec, int codec_param); + +/* + * Not typically used by the UIs + * (set hb_job_t.acodec_copy_mask, hb_job_t.acodec_fallback instead). + */ +void hb_autopassthru_apply_settings(hb_job_t *job); +void hb_autopassthru_print_settings(hb_job_t *job); +int hb_autopassthru_get_encoder(int in_codec, int copy_mask, int fallback, int muxer); + +hb_container_t* hb_container_get_from_format(int format); +int hb_container_get_from_name(const char *name); +int hb_container_get_from_extension(const char *extension); // not really a container name +const char* hb_container_get_name(int format); +const char* hb_container_get_short_name(int format); +const char* hb_container_get_long_name(int format); +const char* hb_container_get_default_extension(int format); +const char* hb_container_sanitize_name(const char *name); +const hb_container_t* hb_container_get_next(const hb_container_t *last); + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_title_set_s.cs when changing this struct +struct hb_title_set_s +{ + hb_list_t * list_title; + int feature; // Detected DVD feature title + const char * path; +}; + +typedef enum +{ + HB_ANAMORPHIC_NONE, + HB_ANAMORPHIC_STRICT, + HB_ANAMORPHIC_LOOSE, + HB_ANAMORPHIC_CUSTOM, + HB_ANAMORPHIC_AUTO +} hb_anamorphic_mode_t; + +/****************************************************************************** + * hb_job_t: settings to be filled by the UI + * Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_job_s.cs when changing this struct + *****************************************************************************/ +struct hb_job_s +{ + const char * json; // JSON encoded job string + + /* ID assigned by UI so it can groups job passes together */ + int sequence_id; + + /* Pointer to the title to be ripped */ + hb_title_t * title; + int feature; // Detected DVD feature title + + /* Chapter selection */ + int chapter_start; + int chapter_end; + + /* Include chapter marker track in mp4? */ + int chapter_markers; + + // Video filters + int grayscale; // Black and white encoding + hb_list_t * list_filter; + + PRIVATE int crop[4]; + PRIVATE int width; + PRIVATE int height; + hb_rational_t par; + + /* Video settings: + vcodec: output codec + vquality: output quality (if invalid, bitrate is used instead) + vbitrate: output bitrate (Kbps) + vrate: output framerate + cfr: 0 (vfr), 1 (cfr), 2 (pfr) [see render.c] + pass: 0, 1 or 2 (or -1 for scan) + areBframes: boolean to note if b-frames are used */ +#define HB_VCODEC_MASK 0x0FFFFFF +#define HB_VCODEC_INVALID 0x0000000 +#define HB_VCODEC_THEORA 0x0000002 +#define HB_VCODEC_FFMPEG_MPEG4 0x0000010 +#define HB_VCODEC_FFMPEG_MPEG2 0x0000020 +#define HB_VCODEC_FFMPEG_VP8 0x0000040 +#define HB_VCODEC_FFMPEG_VP9 0x0000080 +#define HB_VCODEC_FFMPEG_VCE_H264 0x00040000 +#define HB_VCODEC_FFMPEG_VCE_H265 0x00080000 +#define HB_VCODEC_FFMPEG_NVENC_H264 0x00100000 +#define HB_VCODEC_FFMPEG_NVENC_H265 0x00200000 +#define HB_VCODEC_FFMPEG_VT_H264 0x00400000 +#define HB_VCODEC_FFMPEG_VT_H265 0x00800000 +#define HB_VCODEC_FFMPEG_MASK (0x00000F0|HB_VCODEC_FFMPEG_VCE_H264|HB_VCODEC_FFMPEG_VCE_H265|HB_VCODEC_FFMPEG_NVENC_H264|HB_VCODEC_FFMPEG_NVENC_H265|HB_VCODEC_FFMPEG_VT_H264|HB_VCODEC_FFMPEG_VT_H265) +#define HB_VCODEC_QSV_H264 0x0000100 +#define HB_VCODEC_QSV_H265_8BIT 0x0000200 +#define HB_VCODEC_QSV_H265_10BIT 0x0000400 +#define HB_VCODEC_QSV_H265_MASK 0x0000600 +#define HB_VCODEC_QSV_H265 HB_VCODEC_QSV_H265_8BIT +#define HB_VCODEC_QSV_MASK 0x0000F00 +#define HB_VCODEC_X264_8BIT 0x0010000 +#define HB_VCODEC_X264 HB_VCODEC_X264_8BIT +#define HB_VCODEC_X264_10BIT 0x0020000 +#define HB_VCODEC_X264_MASK 0x0030000 +#define HB_VCODEC_H264_MASK (HB_VCODEC_X264_MASK|HB_VCODEC_QSV_H264|HB_VCODEC_FFMPEG_VCE_H264|HB_VCODEC_FFMPEG_NVENC_H264|HB_VCODEC_FFMPEG_VT_H264) +#define HB_VCODEC_X265_8BIT 0x0001000 +#define HB_VCODEC_X265 HB_VCODEC_X265_8BIT +#define HB_VCODEC_X265_10BIT 0x0002000 +#define HB_VCODEC_X265_12BIT 0x0004000 +#define HB_VCODEC_X265_16BIT 0x0008000 +#define HB_VCODEC_X265_MASK 0x000F000 +#define HB_VCODEC_H265_MASK (HB_VCODEC_X265_MASK|HB_VCODEC_QSV_H265_MASK|HB_VCODEC_FFMPEG_VCE_H265|HB_VCODEC_FFMPEG_NVENC_H265|HB_VCODEC_FFMPEG_VT_H265) + +/* define an invalid CQ value compatible with all CQ-capable codecs */ +#define HB_INVALID_VIDEO_QUALITY (-1000.) + + int vcodec; + double vquality; + int vbitrate; + hb_rational_t vrate; + // Some parameters that depend on vrate (like keyint) can't change + // between encoding passes. So orig_vrate is used to store the + // 1st pass rate. + hb_rational_t orig_vrate; + int cfr; + PRIVATE int pass_id; + int twopass; // Enable 2-pass encode. Boolean + int fastfirstpass; + char *encoder_preset; + char *encoder_tune; + char *encoder_options; + char *encoder_profile; + char *encoder_level; + int areBframes; + + int pix_fmt; + int color_prim; + int color_transfer; + int color_matrix; + int color_range; + + int color_prim_override; + int color_transfer_override; + int color_matrix_override; +// see https://developer.apple.com/library/content/technotes/tn2162/_index.html +// https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-125526 +// libav pixfmt.h +#define HB_COLR_PRI_BT709 1 +#define HB_COLR_PRI_UNDEF 2 +#define HB_COLR_PRI_BT470M 4 +#define HB_COLR_PRI_EBUTECH 5 // use for bt470bg +#define HB_COLR_PRI_SMPTEC 6 // smpte170m +#define HB_COLR_PRI_SMPTE240M 7 +#define HB_COLR_PRI_FILM 8 // Illuminant C +#define HB_COLR_PRI_BT2020 9 +#define HB_COLR_PRI_SMPTE428 10 +#define HB_COLR_PRI_SMPTE431 11 +#define HB_COLR_PRI_SMPTE432 12 +#define HB_COLR_PRI_JEDEC_P22 22 +// 0, 3-4, 7-8, 10-65535: reserved/not implemented +#define HB_COLR_TRA_BT709 1 // also use for bt470m, bt470bg, smpte170m, bt2020_10 and bt2020_12 +#define HB_COLR_TRA_UNDEF 2 +#define HB_COLR_TRA_GAMMA22 4 +#define HB_COLR_TRA_GAMMA28 5 +#define HB_COLR_TRA_SMPTE170M 6 +#define HB_COLR_TRA_SMPTE240M 7 +#define HB_COLR_TRA_LINEAR 8 +#define HB_COLR_TRA_LOG 9 +#define HB_COLR_TRA_LOG_SQRT 10 +#define HB_COLR_TRA_IEC61966_2_4 11 +#define HB_COLR_TRA_BT1361_ECG 12 +#define HB_COLR_TRA_IEC61966_2_1 13 +#define HB_COLR_TRA_BT2020_10 14 +#define HB_COLR_TRA_BT2020_12 15 +#define HB_COLR_TRA_SMPTEST2084 16 +#define HB_COLR_TRA_SMPTE428 17 +#define HB_COLR_TRA_ARIB_STD_B67 18 //known as "Hybrid log-gamma" +// 0, 3-6, 8-15, 17-65535: reserved/not implemented +#define HB_COLR_MAT_RGB 0 +#define HB_COLR_MAT_BT709 1 +#define HB_COLR_MAT_UNDEF 2 +#define HB_COLR_MAT_FCC 4 +#define HB_COLR_MAT_BT470BG 5 +#define HB_COLR_MAT_SMPTE170M 6 // also use for fcc and bt470bg +#define HB_COLR_MAT_SMPTE240M 7 +#define HB_COLR_MAT_YCGCO 8 +#define HB_COLR_MAT_BT2020_NCL 9 +#define HB_COLR_MAT_BT2020_CL 10 +#define HB_COLR_MAT_SMPTE2085 11 +#define HB_COLR_MAT_CD_NCL 12 // chromaticity derived non-constant lum +#define HB_COLR_MAT_CD_CL 13 // chromaticity derived constant lum +#define HB_COLR_MAT_ICTCP 14 // ITU-R BT.2100-0, ICtCp +// 0, 3-5, 8, 11-65535: reserved/not implemented + + hb_list_t * list_chapter; + + /* List of audio settings. */ + hb_list_t * list_audio; + int acodec_copy_mask; // Auto Passthru allowed codecs + int acodec_fallback; // Auto Passthru fallback encoder + + /* Subtitles */ + hb_list_t * list_subtitle; + + hb_list_t * list_attachment; + + hb_metadata_t * metadata; + + /* + * Muxer settings + * mux: output file format + * file: file path + */ +#define HB_MUX_MASK 0xFF0001 +#define HB_MUX_INVALID 0x000000 +#define HB_MUX_MP4V2 0x010000 +#define HB_MUX_AV_MP4 0x020000 +#define HB_MUX_MASK_MP4 0x030000 +#define HB_MUX_LIBMKV 0x100000 +#define HB_MUX_AV_MKV 0x200000 +#define HB_MUX_AV_WEBM 0x400000 +#define HB_MUX_MASK_MKV 0x300000 +#define HB_MUX_MASK_AV 0x620000 +#define HB_MUX_MASK_WEBM 0x400000 + +/* default muxer for each container */ +#define HB_MUX_MP4 HB_MUX_AV_MP4 +#define HB_MUX_MKV HB_MUX_AV_MKV +#define HB_MUX_WEBM HB_MUX_AV_WEBM + + int mux; + char * file; + + int inline_parameter_sets; + // Put h.264/h.265 SPS and PPS + // inline in the stream. This + // is necessary when constructing + // adaptive streaming dash files. + int align_av_start; // align A/V stream start times. + // This is used to work around mp4 + // players that do not support edit + // lists. When this option is used + // the resulting stream is not a + // faithful reproduction of the source + // stream and may have blank frames + // added or initial frames dropped. + int mp4_optimize; + int ipod_atom; + + int indepth_scan; + hb_subtitle_config_t select_subtitle_config; + + int angle; // dvd angle to encode + int frame_to_start; // declare eof when we hit this frame + int64_t pts_to_start; // drop frames until we pass this pts + // in the time-linearized input stream + int frame_to_stop; // declare eof when we hit this frame + int64_t pts_to_stop; // declare eof when we pass this pts in + // the time-linearized input stream + int start_at_preview; // if non-zero, encoding will start + // at the position of preview n + int seek_points; // out of N previews + uint32_t frames_to_skip; // decode but discard this many frames + // initially (for frame accurate positioning + // to non-I frames). + PRIVATE int use_decomb; + PRIVATE int use_detelecine; + + // QSV-specific settings + struct + { + int decode; + int async_depth; +#if HB_PROJECT_FEATURE_QSV + hb_qsv_context *ctx; +#endif + // shared encoding parameters + // initialized by the QSV encoder, then used upstream (e.g. by filters) + // to configure their output so that it matches what the encoder expects + struct + { + int pic_struct; + int align_width; + int align_height; + int is_init_done; + } enc_info; + } qsv; + +#ifdef __LIBHB__ + /* Internal data */ + hb_handle_t * h; + volatile hb_error_code * done_error; + volatile int * die; + volatile int done; + + uint64_t st_paused; + + hb_fifo_t * fifo_mpeg2; /* MPEG-2 video ES */ + hb_fifo_t * fifo_raw; /* Raw pictures */ + hb_fifo_t * fifo_sync; /* Raw pictures, framerate corrected */ + hb_fifo_t * fifo_render; /* Raw pictures, scaled */ + hb_fifo_t * fifo_mpeg4; /* MPEG-4 video ES */ + + hb_list_t * list_work; + + hb_esconfig_t config; + + hb_mux_data_t * mux_data; + + int64_t reader_pts_offset; // Reader can discard some video. + // Other pipeline stages need to know + // this. E.g. sync and decsrtsub +#endif +}; + +/* Audio starts here */ +/* Audio Codecs: Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/NativeConstants.cs when changing these consts */ +#define HB_ACODEC_INVALID 0x00000000 +#define HB_ACODEC_NONE 0x00000001 +#define HB_ACODEC_MASK 0x07FFFF01 +#define HB_ACODEC_LAME 0x00000200 +#define HB_ACODEC_VORBIS 0x00000400 +#define HB_ACODEC_AC3 0x00000800 +#define HB_ACODEC_LPCM 0x00001000 +#define HB_ACODEC_DCA 0x00002000 +#define HB_ACODEC_CA_AAC 0x00004000 +#define HB_ACODEC_CA_HAAC 0x00008000 +#define HB_ACODEC_FFAAC 0x00010000 +#define HB_ACODEC_FFMPEG 0x00020000 +#define HB_ACODEC_DCA_HD 0x00040000 +#define HB_ACODEC_MP3 0x00080000 +#define HB_ACODEC_FFFLAC 0x00100000 +#define HB_ACODEC_FFFLAC24 0x00200000 +#define HB_ACODEC_FDK_AAC 0x00400000 +#define HB_ACODEC_FDK_HAAC 0x00800000 +#define HB_ACODEC_FFEAC3 0x01000000 +#define HB_ACODEC_FFTRUEHD 0x02000000 +#define HB_ACODEC_OPUS 0x04000000 +#define HB_ACODEC_FF_MASK 0x07FF2800 +#define HB_ACODEC_PASS_FLAG 0x40000000 +#define HB_ACODEC_PASS_MASK (HB_ACODEC_AC3 | HB_ACODEC_DCA | HB_ACODEC_DCA_HD | HB_ACODEC_FFAAC | HB_ACODEC_FFEAC3 | HB_ACODEC_FFFLAC | HB_ACODEC_MP3 | HB_ACODEC_FFTRUEHD) +#define HB_ACODEC_AUTO_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_PASS_MASK) +#define HB_ACODEC_ANY (HB_ACODEC_PASS_FLAG | HB_ACODEC_MASK) +#define HB_ACODEC_AAC_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFAAC) +#define HB_ACODEC_AC3_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_AC3) +#define HB_ACODEC_DCA_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_DCA) +#define HB_ACODEC_DCA_HD_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_DCA_HD) +#define HB_ACODEC_EAC3_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFEAC3) +#define HB_ACODEC_FLAC_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFFLAC) +#define HB_ACODEC_MP3_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_MP3) +#define HB_ACODEC_TRUEHD_PASS (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFTRUEHD) + +#define HB_SUBSTREAM_BD_TRUEHD 0x72 +#define HB_SUBSTREAM_BD_AC3 0x76 +#define HB_SUBSTREAM_BD_DTSHD 0x72 +#define HB_SUBSTREAM_BD_DTS 0x71 + +/* define an invalid VBR quality compatible with all VBR-capable codecs */ +#define HB_INVALID_AUDIO_QUALITY (-3.) + +#define HB_AUDIO_ATTR_NONE 0x00 +#define HB_AUDIO_ATTR_NORMAL 0x01 +#define HB_AUDIO_ATTR_VISUALLY_IMPAIRED 0x02 +#define HB_AUDIO_ATTR_COMMENTARY 0x04 +#define HB_AUDIO_ATTR_ALT_COMMENTARY 0x08 +#define HB_AUDIO_ATTR_SECONDARY 0x10 +#define HB_AUDIO_ATTR_DEFAULT 0x20 +// This mask should contain all attributes that are allowed for default +// audio track selection +#define HB_AUDIO_ATTR_REGULAR_MASK 0x21 + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio_config_s.cs when changing this struct +struct hb_audio_config_s +{ + /* Output */ + struct + { + enum + { + // make sure audio->config.out.mixdown isn't treated as unsigned + HB_INVALID_AMIXDOWN = -1, + HB_AMIXDOWN_NONE = 0, + HB_AMIXDOWN_MONO, + HB_AMIXDOWN_LEFT, + HB_AMIXDOWN_RIGHT, + HB_AMIXDOWN_STEREO, + HB_AMIXDOWN_DOLBY, + HB_AMIXDOWN_DOLBYPLII, + HB_AMIXDOWN_5POINT1, + HB_AMIXDOWN_6POINT1, + HB_AMIXDOWN_7POINT1, + HB_AMIXDOWN_5_2_LFE, + } mixdown; /* Audio mixdown */ + int track; /* Output track number */ + uint32_t codec; /* Output audio codec */ + int samplerate; /* Output sample rate (Hz) */ + int samples_per_frame; /* Number of samples per frame */ + int bitrate; /* Output bitrate (Kbps) */ + double quality; /* Output quality (encoder-specific) */ + double compression_level; /* Output compression level (encoder-specific) */ + double dynamic_range_compression; /* Amount of DRC applied to this track */ + double gain; /* Gain (in dB), negative is quieter */ + int normalize_mix_level; /* mix level normalization (boolean) */ + int dither_method; /* dither algorithm */ + const char * name; /* Output track name */ + } out; + + /* Input */ + struct + { + int track; /* Input track number */ + PRIVATE uint32_t codec; /* Input audio codec */ + PRIVATE uint32_t codec_param; /* Per-codec config info */ + PRIVATE uint32_t reg_desc; /* Registration descriptor of source */ + PRIVATE uint32_t stream_type; /* Stream type from source stream */ + PRIVATE uint32_t substream_type; /* Substream type for multiplexed streams */ + PRIVATE uint32_t version; /* Bitsream version */ + PRIVATE uint32_t flags; /* Bitstream flags, codec-specific */ + PRIVATE uint32_t mode; /* Bitstream mode, codec-specific */ + PRIVATE int samplerate; /* Input sample rate (Hz) */ + PRIVATE int sample_bit_depth; /* Input samples' bit depth (0 if unknown) */ + PRIVATE int samples_per_frame; /* Number of samples per frame */ + PRIVATE int bitrate; /* Input bitrate (bps) */ + PRIVATE int matrix_encoding; /* Source matrix encoding mode, set by the audio decoder */ + PRIVATE uint64_t channel_layout; /* Source channel layout, set by the audio decoder */ + PRIVATE hb_chan_map_t * channel_map; /* Source channel map, set by the audio decoder */ + PRIVATE int encoder_delay; /* Encoder delay in samples. + * These samples should be dropped + * when decoding */ + PRIVATE hb_rational_t timebase; + const char * name; + } in; + + struct + { + PRIVATE char description[1024]; + PRIVATE char simple[1024]; + PRIVATE char iso639_2[4]; + PRIVATE uint32_t attributes; /* normal, visually impaired, director's commentary */ + } lang; +}; + +#ifdef __LIBHB__ +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio_s.cs when changing this struct +struct hb_audio_s +{ + int id; + + hb_audio_config_t config; + + struct { + hb_fifo_t * fifo_in; /* AC3/MPEG/LPCM ES */ + hb_fifo_t * fifo_raw; /* Raw audio */ + hb_fifo_t * fifo_sync; /* Resampled, synced raw audio */ + hb_fifo_t * fifo_out; /* MP3/AAC/Vorbis ES */ + + hb_esconfig_t config; + hb_mux_data_t * mux_data; + hb_fifo_t * scan_cache; + } priv; +}; +#endif + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_chapter_s.cs when changing this struct +struct hb_chapter_s +{ + int index; + + /* Visual-friendly duration */ + int hours; + int minutes; + int seconds; + + /* Exact duration (in 1/90000s) */ + uint64_t duration; + + /* Optional chapter title */ + char *title; +}; + +/* + * A subtitle track. + * + * Required fields when a demuxer creates a subtitle track are: + * > id + * - ID of this track + * - must be unique for all tracks within a single job, + * since it is used to look up the appropriate in-FIFO with GetFifoForId() + * > format + * - format of the packets the subtitle decoder work-object sends to sub->fifo_raw + * - for passthru subtitles, is also the format of the final packets sent to sub->fifo_out + * - PICTURESUB for banded 8-bit YAUV pixels; see decvobsub.c documentation for more info + * - TEXTSUB for UTF-8 text marked up with <b>, <i>, or <u> + * - read by the muxers, and by the subtitle burn-in logic in the hb_sync_video work-object + * > source + * - used to create the appropriate subtitle decoder work-object in do_job() + * > config.dest + * - whether to render the subtitle on the video track (RENDERSUB) or + * to pass it through its own subtitle track in the output container (PASSTHRUSUB) + * - all newly created non-VOBSUB tracks should default to PASSTHRUSUB + * - all newly created VOBSUB tracks should default to RENDERSUB, for legacy compatibility + * > lang + * - user-readable description of the subtitle track + * - may correspond to the language of the track (see the 'iso639_2' field) + * - may correspond to the type of track (see the 'type' field; ex: "Closed Captions") + * > iso639_2 + * - language code for the subtitle, or "und" if unknown + * + * Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_subtitle_s.cs when changing this struct + */ + +#define HB_SUBTITLE_ATTR_UNKNOWN 0x0000 +#define HB_SUBTITLE_ATTR_NORMAL 0x0001 +#define HB_SUBTITLE_ATTR_LARGE 0x0002 +#define HB_SUBTITLE_ATTR_CHILDREN 0x0004 +#define HB_SUBTITLE_ATTR_CC 0x0008 +#define HB_SUBTITLE_ATTR_FORCED 0x0010 +#define HB_SUBTITLE_ATTR_COMMENTARY 0x0020 +#define HB_SUBTITLE_ATTR_4_3 0x0040 +#define HB_SUBTITLE_ATTR_WIDE 0x0080 +#define HB_SUBTITLE_ATTR_LETTERBOX 0x0100 +#define HB_SUBTITLE_ATTR_PANSCAN 0x0200 +#define HB_SUBTITLE_ATTR_DEFAULT 0x0400 + +#define HB_SUBTITLE_IMPORT_TAG 0xFF000000 +#define HB_SUBTITLE_EMBEDDED_CC_TAG 0xFE000000 + +struct hb_subtitle_s +{ + int id; + int track; + int out_track; + + hb_subtitle_config_t config; + + enum subtype { PICTURESUB, TEXTSUB } format; + enum subsource { VOBSUB, CC608SUB, /*unused*/CC708SUB, + UTF8SUB, TX3GSUB, SSASUB, PGSSUB, + IMPORTSRT, IMPORTSSA, SRTSUB = IMPORTSRT } source; + const char * name; + char lang[1024]; + char iso639_2[4]; + uint32_t attributes; /* Closed Caption, Childrens, Directors etc */ + + // Color lookup table for VOB subtitle tracks. Each entry is in YCbCr format. + // Must be filled out by the demuxer for VOB subtitle tracks. + uint32_t palette[16]; + uint8_t palette_set; + int width; + int height; + + // Codec private data for subtitles originating from FFMPEG sources + uint8_t * extradata; + int extradata_size; + + int hits; /* How many hits/occurrences of this subtitle */ + int forced_hits; /* How many forced hits in this subtitle */ + +#ifdef __LIBHB__ + /* Internal data */ + uint32_t codec; /* Input "codec" */ + uint32_t reg_desc; /* registration descriptor of source */ + uint32_t stream_type; /* stream type from source stream */ + uint32_t substream_type; /* substream for multiplexed streams */ + hb_rational_t timebase; + + hb_fifo_t * fifo_in; /* SPU ES */ + hb_fifo_t * fifo_raw; /* Decoded SPU */ + hb_fifo_t * fifo_out; /* Correct Timestamps, ready to be muxed */ + hb_mux_data_t * mux_data; +#endif +}; + +/* + * An attachment. + * + * These are usually used for attaching embedded fonts to movies containing SSA subtitles. + */ +struct hb_attachment_s +{ + enum attachtype { FONT_TTF_ATTACH, FONT_OTF_ATTACH, HB_ART_ATTACH } type; + char * name; + char * data; + int size; +}; + +struct hb_coverart_s +{ + uint8_t *data; + uint32_t size; + enum arttype { + HB_ART_UNDEFINED, + HB_ART_BMP, + HB_ART_GIF, + HB_ART_PNG, + HB_ART_JPEG + } type; +}; + +struct hb_metadata_s +{ + char *name; + char *artist; // Actors + char *composer; + char *release_date; + char *comment; + char *album; // DVD + char *album_artist; // Director + char *genre; + char *description; + char *long_description; + hb_list_t * list_coverart; +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_title_s.cs when changing this struct +struct hb_title_s +{ + enum { HB_DVD_TYPE, HB_BD_TYPE, HB_STREAM_TYPE, HB_FF_STREAM_TYPE } type; + uint32_t reg_desc; + const char * path; + const char * name; + int index; + int playlist; + int angle_count; + void * opaque_priv; + + /* Visual-friendly duration */ + int hours; + int minutes; + int seconds; + + /* Exact duration (in 1/90000s) */ + uint64_t duration; + + int preview_count; + int has_resolution_change; + enum { HB_ROTATION_0, HB_ROTATION_90, HB_ROTATION_180, HB_ROTATION_270 } rotation; + hb_geometry_t geometry; + hb_rational_t dar; // aspect ratio for the title's video + hb_rational_t container_dar; // aspect ratio from container (0 if none) + int pix_fmt; + int color_prim; + int color_transfer; + int color_matrix; + int color_range; + hb_rational_t vrate; + int crop[4]; + enum {HB_DVD_DEMUXER, HB_TS_DEMUXER, HB_PS_DEMUXER, HB_NULL_DEMUXER} demuxer; + int detected_interlacing; + int pcr_pid; /* PCR PID for TS streams */ + int video_id; /* demuxer stream id for video */ + int video_codec; /* worker object id of video codec */ + uint32_t video_stream_type; /* stream type from source stream */ + int video_codec_param; /* codec specific config */ + char * video_codec_name; + int video_bitrate; + hb_rational_t video_timebase; + char * container_name; + int data_rate; + + // additional supported video decoders (e.g. HW-accelerated implementations) + int video_decode_support; +#define HB_DECODE_SUPPORT_SW 0x01 // software (libavcodec or mpeg2dec) +#define HB_DECODE_SUPPORT_QSV 0x02 // Intel Quick Sync Video + + hb_metadata_t * metadata; + + hb_list_t * list_chapter; + hb_list_t * list_audio; + hb_list_t * list_subtitle; + hb_list_t * list_attachment; + + uint32_t flags; + // set if video stream doesn't have IDR frames +#define HBTF_NO_IDR (1 << 0) +#define HBTF_SCAN_COMPLETE (1 << 1) +#define HBTF_RAW_VIDEO (1 << 2) +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_state_s.cs when changing this struct +struct hb_state_s +{ +#define HB_STATE_IDLE 1 +#define HB_STATE_SCANNING 2 +#define HB_STATE_SCANDONE 4 +#define HB_STATE_WORKING 8 +#define HB_STATE_PAUSED 16 +#define HB_STATE_WORKDONE 32 +#define HB_STATE_MUXING 64 +#define HB_STATE_SEARCHING 128 + int state; + int sequence_id; + + struct + { + struct + { + /* HB_STATE_SCANNING */ + float progress; + int preview_cur; + int preview_count; + int title_cur; + int title_count; + } scanning; + + struct + { + /* HB_STATE_WORKING || HB_STATE_SEARCHING || HB_STATE_WORKDONE */ +#define HB_PASS_SUBTITLE -1 +#define HB_PASS_ENCODE 0 +#define HB_PASS_ENCODE_1ST 1 // Some code depends on these values being +#define HB_PASS_ENCODE_2ND 2 // 1 and 2. Do not change. + int pass_id; + int pass; + int pass_count; + float progress; + float rate_cur; + float rate_avg; + int64_t eta_seconds; + int hours; + int minutes; + int seconds; + uint64_t paused; + hb_error_code error; + } working; + + struct + { + /* HB_STATE_MUXING */ + float progress; + } muxing; + } param; +}; + +typedef struct hb_work_info_s +{ + const char * name; + int profile; + int level; + int bitrate; + hb_rational_t rate; + uint32_t version; + uint32_t flags; + uint32_t mode; + union + { + struct + { // info only valid for video decoders + hb_geometry_t geometry; + int pix_fmt; + int color_prim; + int color_transfer; + int color_matrix; + int color_range; + int video_decode_support; + }; + struct + { // info only valid for audio decoders + uint64_t channel_layout; + hb_chan_map_t * channel_map; + int samples_per_frame; + int sample_bit_depth; + int matrix_encoding; + }; + }; +} hb_work_info_t; + +struct hb_work_object_s +{ + int id; + char * name; + +#ifdef __LIBHB__ + int (* init) ( hb_work_object_t *, hb_job_t * ); + int (* work) ( hb_work_object_t *, hb_buffer_t **, + hb_buffer_t ** ); + void (* close) ( hb_work_object_t * ); + /* the info entry point is used by scan to get bitstream information + * during a decode (i.e., it should only be called after at least one + * call to the 'work' entry point). currently it's only called for + * video streams & can be null for other work objects. */ + int (* info) ( hb_work_object_t *, hb_work_info_t * ); + /* the bitstream info entry point is used by scan to get bitstream + * information from a buffer. it doesn't have to be called during a + * decode (it can be called even if init & work haven't been). + * currently it's only called for audio streams & can be null for + * other work objects. */ + int (* bsinfo) ( hb_work_object_t *, const hb_buffer_t *, + hb_work_info_t * ); + void (* flush) ( hb_work_object_t * ); + + hb_fifo_t * fifo_in; + hb_fifo_t * fifo_out; + hb_esconfig_t * config; + + /* Pointer hb_audio_t so we have access to the info in the audio worker threads. */ + hb_audio_t * audio; + + /* Pointer hb_subtitle_t so we have access to the info in the subtitle worker threads. */ + hb_subtitle_t * subtitle; + + hb_work_private_t * private_data; + + hb_thread_t * thread; + volatile int * done; + volatile int * die; + int status; + int frame_count; + int codec_param; + hb_title_t * title; + + hb_work_object_t * next; + + hb_handle_t * h; +#endif +}; + +extern hb_work_object_t hb_sync_video; +extern hb_work_object_t hb_sync_audio; +extern hb_work_object_t hb_sync_subtitle; +extern hb_work_object_t hb_decvobsub; +extern hb_work_object_t hb_encvobsub; +extern hb_work_object_t hb_deccc608; +extern hb_work_object_t hb_decsrtsub; +extern hb_work_object_t hb_decutf8sub; +extern hb_work_object_t hb_dectx3gsub; +extern hb_work_object_t hb_decssasub; +extern hb_work_object_t hb_decpgssub; +extern hb_work_object_t hb_encavcodec; +extern hb_work_object_t hb_encqsv; +extern hb_work_object_t hb_encx264; +extern hb_work_object_t hb_enctheora; +extern hb_work_object_t hb_encx265; +extern hb_work_object_t hb_decavcodeca; +extern hb_work_object_t hb_decavcodecv; +extern hb_work_object_t hb_declpcm; +extern hb_work_object_t hb_encvorbis; +extern hb_work_object_t hb_muxer; +extern hb_work_object_t hb_encca_aac; +extern hb_work_object_t hb_encca_haac; +extern hb_work_object_t hb_encavcodeca; +extern hb_work_object_t hb_reader; + +#define HB_FILTER_OK 0 +#define HB_FILTER_DELAY 1 +#define HB_FILTER_FAILED 2 +#define HB_FILTER_DROP 3 +#define HB_FILTER_DONE 4 + +typedef struct hb_filter_init_s +{ + hb_job_t * job; + int pix_fmt; + int color_prim; + int color_transfer; + int color_matrix; + int color_range; + hb_geometry_t geometry; + int crop[4]; + hb_rational_t vrate; + int cfr; + int grayscale; + hb_rational_t time_base; +} hb_filter_init_t; + +typedef struct hb_filter_info_s +{ + char * human_readable_desc; + hb_filter_init_t output; +} hb_filter_info_t; + +struct hb_filter_object_s +{ + int id; + int enforce_order; + int skip; + int aliased; + char * name; + hb_dict_t * settings; + +#ifdef __LIBHB__ + int (* init) ( hb_filter_object_t *, hb_filter_init_t * ); + int (* init_thread)( hb_filter_object_t *, int ); + int (* post_init) ( hb_filter_object_t *, hb_job_t * ); + int (* work) ( hb_filter_object_t *, + hb_buffer_t **, hb_buffer_t ** ); + int (* work_thread)( hb_filter_object_t *, + hb_buffer_t **, hb_buffer_t **, int ); + void (* close) ( hb_filter_object_t * ); + hb_filter_info_t * (* info) ( hb_filter_object_t * ); + + const char * settings_template; + + hb_fifo_t * fifo_in; + hb_fifo_t * fifo_out; + + hb_subtitle_t * subtitle; + + hb_filter_private_t * private_data; + + hb_thread_t * thread; + volatile int * done; + int status; + + // Filters can drop frames and thus chapter marks + // These are used to bridge the chapter to the next buffer + int chapter_val; + int64_t chapter_time; + + hb_filter_object_t * sub_filter; +#endif +}; + +// Update win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_filter_ids.cs when changing this enum +enum +{ + HB_FILTER_INVALID = 0, + // for QSV - important to have before other filters + HB_FILTER_FIRST = 1, + HB_FILTER_QSV_PRE = 1, + + // First, filters that may change the framerate (drop or dup frames) + HB_FILTER_DETELECINE, + HB_FILTER_COMB_DETECT, + HB_FILTER_DECOMB, + HB_FILTER_DEINTERLACE, + HB_FILTER_VFR, + // Filters that must operate on the original source image are next + HB_FILTER_DEBLOCK, + HB_FILTER_DENOISE, + HB_FILTER_HQDN3D = HB_FILTER_DENOISE, + HB_FILTER_NLMEANS, + HB_FILTER_CHROMA_SMOOTH, + HB_FILTER_RENDER_SUB, + HB_FILTER_CROP_SCALE, + HB_FILTER_LAPSHARP, + HB_FILTER_UNSHARP, + HB_FILTER_ROTATE, + HB_FILTER_GRAYSCALE, + HB_FILTER_PAD, + HB_FILTER_COLORSPACE, + + // Finally filters that don't care what order they are in, + // except that they must be after the above filters + HB_FILTER_AVFILTER, + + // for QSV - important to have as a last one + HB_FILTER_QSV_POST, + // default MSDK VPP filter + HB_FILTER_QSV, + HB_FILTER_LAST = HB_FILTER_QSV, + // wrapper filter for frame based multi-threading of simple filters + HB_FILTER_MT_FRAME +}; + +hb_filter_object_t * hb_filter_get( int filter_id ); +hb_filter_object_t * hb_filter_init( int filter_id ); +hb_filter_object_t * hb_filter_copy( hb_filter_object_t * filter ); +hb_list_t * hb_filter_list_copy(const hb_list_t *src); +hb_filter_object_t * hb_filter_find(const hb_list_t *list, int filter_id); +void hb_filter_close( hb_filter_object_t ** ); +void hb_filter_info_close( hb_filter_info_t ** ); +hb_dict_t * hb_parse_filter_settings(const char * settings); +char * hb_parse_filter_settings_json(const char * settings_str); +char * hb_filter_settings_string(int filter_id, + hb_value_t * value); +char * hb_filter_settings_string_json(int filter_id, + const char * json); + +typedef void hb_error_handler_t( const char *errmsg ); + +extern void hb_register_error_handler( hb_error_handler_t * handler ); + +char * hb_strdup_vaprintf( const char * fmt, va_list args ); +char * hb_strdup_printf(const char *fmt, ...) HB_WPRINTF(1, 2); +char * hb_strncat_dup( const char * s1, const char * s2, size_t n ); + +// free array of strings +void hb_str_vfree( char ** strv ); +// count number of strings in array of strings +int hb_str_vlen(char ** strv); +// split string into array of strings +char ** hb_str_vsplit( const char * str, char delem ); + +int hb_yuv2rgb(int yuv); +int hb_rgb2yuv(int rgb); + +const char * hb_subsource_name( int source ); + +// unparse a set of x264 settings to an HB encopts string +char * hb_x264_param_unparse(int bit_depth, const char *x264_preset, + const char *x264_tune, const char *x264_encopts, + const char *h264_profile, const char *h264_level, + int width, int height); + +// x264 option name/synonym helper +const char * hb_x264_encopt_name( const char * name ); + +#if HB_PROJECT_FEATURE_X265 +// x265 option name/synonym helper +const char * hb_x265_encopt_name( const char * name ); +#endif + +int hb_output_color_prim(hb_job_t * job); +int hb_output_color_transfer(hb_job_t * job); +int hb_output_color_matrix(hb_job_t * job); + +#define HB_NEG_FLOAT_REG "(([-])?(([0-9]+([.,][0-9]+)?)|([.,][0-9]+))" +#define HB_FLOAT_REG "(([0-9]+([.,][0-9]+)?)|([.,][0-9]+))" +#define HB_NEG_INT_REG "(([-]?[0-9]+)" +#define HB_INT_REG "([0-9]+)" +#define HB_RATIONAL_REG "([0-9]+/[0-9]+)" +#define HB_BOOL_REG "(yes|no|true|false|[01])" +#define HB_ALL_REG "(.*)" + +#endif diff --git a/libhb/handbrake/compat.h b/libhb/handbrake/compat.h new file mode 100644 index 000000000..f8ab40614 --- /dev/null +++ b/libhb/handbrake/compat.h @@ -0,0 +1,38 @@ +/* compat.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_COMPAT_H +#define HB_COMPAT_H + +#ifdef HB_NEED_STRTOK_R +/* + * Some MinGW-w64 distributions #define strtok_r in pthread.h, + * however their so-called "implementation" isn't thread-safe. + */ +#ifdef USE_PTHREAD +#include <pthread.h> +#ifdef strtok_r +#undef strtok_r +#endif // strtok_r +#endif // USE_PTHREAD + +char *strtok_r(char *s, const char *delim, char **save_ptr); +#endif // HB_NEED_STRTOK_R + +#ifndef HAS_STRERROR_R +#ifndef _GNU_SOURCE +#include <sys/types.h> +/* + * POSIX definition of strerror_r() -- see http://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror.html + */ +int strerror_r(int errnum, char *strerrbuf, size_t buflen); +#endif // _GNU_SOURCE +#endif // HAVE_STRERROR_R + +#endif // HB_COMPAT_H diff --git a/libhb/handbrake/deccc608sub.h b/libhb/handbrake/deccc608sub.h new file mode 100644 index 000000000..044fc78f7 --- /dev/null +++ b/libhb/handbrake/deccc608sub.h @@ -0,0 +1,146 @@ +/* deccc608sub.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +/* + * From ccextractor... + */ +#ifndef __DECCC608SUB_H__ +#define __DECCC608SUB_H__ + +#include "handbrake/common.h" + +struct s_write; + +#define CC608_SCREEN_WIDTH 32 + +enum cc_modes +{ + MODE_POPUP = 0, + MODE_ROLLUP_2 = 1, + MODE_ROLLUP_3 = 2, + MODE_ROLLUP_4 = 3, + MODE_TEXT = 4 +}; + +enum color_code +{ + COL_WHITE = 0, + COL_GREEN = 1, + COL_BLUE = 2, + COL_CYAN = 3, + COL_RED = 4, + COL_YELLOW = 5, + COL_MAGENTA = 6, + COL_USERDEFINED = 7 +}; + + +enum font_bits +{ + FONT_REGULAR = 0, + FONT_ITALICS = 1, + FONT_UNDERLINED = 2, + FONT_UNDERLINED_ITALICS = 3 +}; + +#define FONT_STYLE_MASK FONT_UNDERLINED_ITALICS + +struct eia608_screen // A CC buffer +{ + unsigned char characters[15][33]; + unsigned char colors[15][33]; + unsigned char fonts[15][33]; // Extra char at the end for a 0 + int row_used[15]; // Any data in row? + int empty; // Buffer completely empty? + int dirty; // Flag indicates buffer has changed since written +}; + +struct eia608 +{ + struct eia608_screen buffer1; + struct eia608_screen buffer2; + int cursor_row, cursor_column; + int visible_buffer; + int ssa_counter; // Number of subs currently written + int screenfuls_counter; // Number of meaningful screenfuls written + int64_t current_visible_start_ms; // At what time did the current visible buffer became so? + int64_t current_visible_scr_sequence; // At what SCR did the current visible buffer became so? + enum cc_modes mode; + unsigned char last_c1, last_c2; + int channel; // Currently selected channel + unsigned char color; // Color we are currently using to write + unsigned char font; // Font we are currently using to write + int rollup_base_row; +}; + +struct s_write { + struct eia608 *data608; + FILE *fh; + unsigned char *subline; + int new_sentence; + int new_channel; + int in_xds_mode; + hb_buffer_list_t list; + hb_buffer_t *hb_buffer; + hb_buffer_t *hb_last_buffer; + int64_t last_pts; + int last_scr_sequence; + unsigned char *enc_buffer; // Generic general purpose buffer + unsigned enc_buffer_used; + unsigned enc_buffer_capacity; + + int clear_sub_needed; // Indicates that we need to send a null + // subtitle to clear the current subtitle + + int rollup_cr; // Flag indicates if CR command performed by rollup + int direct_rollup; + int line; // SSA line number + int width; + int height; + int crop[4]; + hb_rational_t par; + uint8_t prev_font_style; + uint8_t prev_font_color; +}; + +enum command_code +{ + COM_UNKNOWN = 0, + COM_ERASEDISPLAYEDMEMORY = 1, + COM_RESUMECAPTIONLOADING = 2, + COM_ENDOFCAPTION = 3, + COM_TABOFFSET1 = 4, + COM_TABOFFSET2 = 5, + COM_TABOFFSET3 = 6, + COM_ROLLUP2 = 7, + COM_ROLLUP3 = 8, + COM_ROLLUP4 = 9, + COM_CARRIAGERETURN = 10, + COM_ERASENONDISPLAYEDMEMORY = 11, + COM_BACKSPACE = 12, + COM_RESUMETEXTDISPLAY = 13 +}; + +enum encoding_type +{ + ENC_UNICODE = 0, + ENC_LATIN_1 = 1, + ENC_UTF_8 = 2 +}; + +enum output_format +{ + OF_RAW = 0, + OF_SRT = 1, + OF_SAMI = 2, + OF_TRANSCRIPT = 3, + OF_RCWT = 4 +}; + +#endif // __DECCC608SUB_H__ diff --git a/libhb/handbrake/decomb.h b/libhb/handbrake/decomb.h new file mode 100644 index 000000000..181bb8ad3 --- /dev/null +++ b/libhb/handbrake/decomb.h @@ -0,0 +1,25 @@ +/* decomb.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_DECOMB_H +#define HB_DECOMB_H + +#define MODE_DECOMB_YADIF 1 // Use yadif +#define MODE_DECOMB_BLEND 2 // Use blending interpolation +#define MODE_DECOMB_CUBIC 4 // Use cubic interpolation +#define MODE_DECOMB_EEDI2 8 // Use EEDI2 interpolation +#define MODE_DECOMB_BOB 16 // Deinterlace each field to a separate frame +#define MODE_DECOMB_SELECTIVE 32 // Selectively deinterlace based on comb detection + +#define MODE_YADIF_ENABLE 1 +#define MODE_YADIF_SPATIAL 2 +#define MODE_YADIF_BOB 4 +#define MODE_DEINTERLACE_QSV 8 + +#endif // HB_DECOMB_H diff --git a/libhb/handbrake/decsrtsub.h b/libhb/handbrake/decsrtsub.h new file mode 100644 index 000000000..d38357d25 --- /dev/null +++ b/libhb/handbrake/decsrtsub.h @@ -0,0 +1,16 @@ +/* decsrtsub.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef __DECSRTSUB_H__ +#define __DECSRTSUB_H__ + +void hb_srt_to_ssa(hb_buffer_t *sub_in, int line); + +#endif // __DECSRTSUB_H__ + diff --git a/libhb/handbrake/decssasub.h b/libhb/handbrake/decssasub.h new file mode 100644 index 000000000..19c7ce633 --- /dev/null +++ b/libhb/handbrake/decssasub.h @@ -0,0 +1,13 @@ +/* decssasub.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef __DECSSASUB_H__ +#define __DECSSASUB_H__ + +#endif // __DECSSASUB_H__ diff --git a/libhb/handbrake/dvd.h b/libhb/handbrake/dvd.h new file mode 100644 index 000000000..7ac673ca0 --- /dev/null +++ b/libhb/handbrake/dvd.h @@ -0,0 +1,120 @@ +/* dvd.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_DVD_H +#define HB_DVD_H + +#include "dvdnav/dvdnav.h" +#include "dvdread/ifo_read.h" +#include "dvdread/nav_read.h" + +#define HB_VOBSUB_STYLE_4_3 0 +#define HB_VOBSUB_STYLE_WIDE 1 +#define HB_VOBSUB_STYLE_LETTERBOX 2 +#define HB_VOBSUB_STYLE_PANSCAN 3 + +struct hb_dvd_chapter_s +{ + int index; + int64_t duration; + int pgn; + int pgcn; + int block_start; + int block_end; +}; + +struct hb_dvdread_s +{ + char * path; + + dvd_reader_t * reader; + ifo_handle_t * vmg; + + int vts; + int ttn; + ifo_handle_t * ifo; + dvd_file_t * file; + + pgc_t * pgc; + int cell_start; + int cell_end; + int title_start; + int title_end; + int title_block_count; + int cell_cur; + int cell_next; + int cell_overlap; + int block; + int pack_len; + int next_vobu; + int in_cell; + int in_sync; + uint16_t cur_vob_id; + uint8_t cur_cell_id; + hb_handle_t * h; + int chapter; +}; + +struct hb_dvdnav_s +{ + char * path; + + dvdnav_t * dvdnav; + dvd_reader_t * reader; + ifo_handle_t * vmg; + int title; + int title_block_count; + int chapter; + int cell; + int stopped; + hb_handle_t * h; + + ifo_handle_t * ifo; + int vts; + int pgcn; + int pgn; + int64_t duration; + hb_list_t * list_dvd_chapter; +}; + +typedef struct hb_dvd_chapter_s hb_dvd_chapter_t; +typedef struct hb_dvdnav_s hb_dvdnav_t; +typedef struct hb_dvdread_s hb_dvdread_t; + +union hb_dvd_s +{ + hb_dvdread_t dvdread; + hb_dvdnav_t dvdnav; +}; + + +struct hb_dvd_func_s +{ + hb_dvd_t * (* init) ( hb_handle_t *, const char * ); + void (* close) ( hb_dvd_t ** ); + char * (* name) ( char * ); + int (* title_count) ( hb_dvd_t * ); + hb_title_t * (* title_scan) ( hb_dvd_t *, int, uint64_t ); + int (* start) ( hb_dvd_t *, hb_title_t *, int ); + void (* stop) ( hb_dvd_t * ); + int (* seek) ( hb_dvd_t *, float ); + hb_buffer_t * (* read) ( hb_dvd_t * ); + int (* chapter) ( hb_dvd_t * ); + int (* angle_count) ( hb_dvd_t * ); + void (* set_angle) ( hb_dvd_t *, int ); + int (* main_feature)( hb_dvd_t *, hb_list_t * ); +}; +typedef struct hb_dvd_func_s hb_dvd_func_t; + +hb_dvd_func_t * hb_dvdnav_methods( void ); +hb_dvd_func_t * hb_dvdread_methods( void ); + +#endif // HB_DVD_H + + diff --git a/libhb/handbrake/eedi2.h b/libhb/handbrake/eedi2.h new file mode 100644 index 000000000..e524092f0 --- /dev/null +++ b/libhb/handbrake/eedi2.h @@ -0,0 +1,93 @@ +/* eedi2.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +// Used to order a sequence of metrics for median filtering +void eedi2_sort_metrics( int *order, const int length ); + +// Aping some Windows API functions AviSynth seems to like +// Taken from here: http://www.gidforums.com/t-8543.html +void *eedi2_aligned_malloc(size_t size, size_t align_size); +void eedi2_aligned_free(void *ptr); + +// Copies bitmaps +void eedi2_bit_blit( uint8_t * dstp, int dst_pitch, const uint8_t * srcp, int src_pitch, + int row_size, int height ); + +// Sets up the initial field-sized bitmap EEDI2 interpolates from +void eedi2_fill_half_height_buffer_plane( uint8_t * src, uint8_t * dst, int pitch, int height ); + +// Simple line doubler +void eedi2_upscale_by_2( uint8_t * srcp, uint8_t * dstp, int height, int pitch ); + +// Finds places where vertically adjacent pixels abruptly change intensity +void eedi2_build_edge_mask( uint8_t * dstp, int dst_pitch, uint8_t *srcp, int src_pitch, + int mthresh, int lthresh, int vthresh, int height, int width ); + +// Expands and smooths out the edge mask by considering a pixel +// to be masked if >= dilation threshold adjacent pixels are masked. +void eedi2_dilate_edge_mask( uint8_t *mskp, int msk_pitch, uint8_t *dstp, int dst_pitch, + int dstr, int height, int width ); + +// Contracts the edge mask by considering a pixel to be masked +// only if > erosion threshold adjacent pixels are masked +void eedi2_erode_edge_mask( uint8_t *mskp, int msk_pitch, uint8_t *dstp, int dst_pitch, + int estr, int height, int width ); + +// Smooths out horizontally aligned holes in the mask +// If none of the 6 horizontally adjacent pixels are masked, +// don't consider the current pixel masked. If there are any +// masked on both sides, consider the current pixel masked. +void eedi2_remove_small_gaps( uint8_t * mskp, int msk_pitch, uint8_t * dstp, int dst_pitch, + int height, int width ); + +// Spatial vectors. Looks at maximum_search_distance surrounding pixels +// to guess which angle edges follow. This is EEDI2's timesink, and can be +// thought of as YADIF_CHECK on steroids. Both find edge directions. +void eedi2_calc_directions( const int plane, uint8_t * mskp, int msk_pitch, uint8_t * srcp, int src_pitch, + uint8_t * dstp, int dst_pitch, int maxd, int nt, int height, int width ); + +void eedi2_filter_map( uint8_t *mskp, int msk_pitch, uint8_t *dmskp, int dmsk_pitch, + uint8_t * dstp, int dst_pitch, int height, int width ); + +void eedi2_filter_dir_map( uint8_t * mskp, int msk_pitch, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int height, int width ); + +void eedi2_expand_dir_map( uint8_t * mskp, int msk_pitch, uint8_t *dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int height, int width ); + +void eedi2_mark_directions_2x( uint8_t * mskp, int msk_pitch, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int tff, int height, int width ); + +void eedi2_filter_dir_map_2x( uint8_t * mskp, int msk_pitch, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int field, int height, int width ); + +void eedi2_expand_dir_map_2x( uint8_t * mskp, int msk_pitch, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int field, int height, int width ); + +void eedi2_fill_gaps_2x( uint8_t *mskp, int msk_pitch, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, int field, int height, int width ); + +void eedi2_interpolate_lattice( const int plane, uint8_t * dmskp, int dmsk_pitch, uint8_t * dstp, + int dst_pitch, uint8_t * omskp, int omsk_pitch, int field, int nt, + int height, int width ); + +void eedi2_post_process( uint8_t * nmskp, int nmsk_pitch, uint8_t * omskp, int omsk_pitch, uint8_t * dstp, + int src_pitch, int field, int height, int width ); + +void eedi2_gaussian_blur1( uint8_t * src, int src_pitch, uint8_t * tmp, int tmp_pitch, uint8_t * dst, + int dst_pitch, int height, int width ); + +void eedi2_gaussian_blur_sqrt2( int *src, int *tmp, int *dst, const int pitch, + const int height, const int width ); + +void eedi2_calc_derivatives( uint8_t *srcp, int src_pitch, int height, int width, + int *x2, int *y2, int *xy); + +void eedi2_post_process_corner( int *x2, int *y2, int *xy, const int pitch, uint8_t * mskp, int msk_pitch, + uint8_t * dstp, int dst_pitch, int height, int width, int field ); diff --git a/libhb/handbrake/encx264.h b/libhb/handbrake/encx264.h new file mode 100644 index 000000000..29085e50c --- /dev/null +++ b/libhb/handbrake/encx264.h @@ -0,0 +1,65 @@ +/* encx264.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_ENCX264_H +#define HB_ENCX264_H + +#include "x264.h" +#include "handbrake/h264_common.h" + +/* x264 preferred option names (left) and synonyms (right). + * The "preferred" names match names used in x264's param2string function more + * closely than their corresponding synonyms, or are just shorter. */ +static const char * const hb_x264_encopt_synonyms[][2] = +{ + { "deterministic", "n-deterministic", }, + { "level", "level-idc", }, + { "ref", "frameref", }, + { "keyint-min", "min-keyint", }, + { "no-deblock", "nf", }, + { "deblock", "filter", }, + { "cqm", "cqmfile", }, + { "analyse", "partitions", }, + { "weightb", "weight-b", }, + { "direct", "direct-pred", }, + { "merange", "me-range", }, + { "mvrange", "mv-range", }, + { "mvrange-thread", "mv-range-thread", }, + { "subme", "subq", }, + { "qp", "qp_constant", }, + { "qpmin", "qp-min", }, + { "qpmax", "qp-max", }, + { "qpstep", "qp-step", }, + { "ipratio", "ip-factor", }, + { "pbratio", "pb-factor", }, + { "cplxblur", "cplx-blur", }, + { NULL, NULL, }, +}; + +typedef struct x264_api_s +{ + int bit_depth; + void (*param_default)(x264_param_t*); + int (*param_default_preset)(x264_param_t*, const char*, const char*); + int (*param_apply_profile)(x264_param_t*, const char*); + void (*param_apply_fastfirstpass)(x264_param_t*); + int (*param_parse)(x264_param_t*, const char*, const char*); + x264_t* (*encoder_open)(x264_param_t*); + int (*encoder_headers)(x264_t*, x264_nal_t**, int*); + int (*encoder_encode)(x264_t*, x264_nal_t**, int*, + x264_picture_t*, x264_picture_t*); + int (*encoder_delayed_frames)(x264_t*); + void (*encoder_close)(x264_t*); + void (*picture_init)(x264_picture_t*); +} x264_api_t; + +void hb_x264_global_init(void); +const x264_api_t * hb_x264_api_get(int bit_depth); + +#endif // HB_ENCX264_H diff --git a/libhb/handbrake/h264_common.h b/libhb/handbrake/h264_common.h new file mode 100644 index 000000000..afe240113 --- /dev/null +++ b/libhb/handbrake/h264_common.h @@ -0,0 +1,40 @@ +/* h264_common.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_H264_COMMON_H +#define HB_H264_COMMON_H + +static const char * const hb_h264_profile_names_8bit[] = { + "auto", "high", "main", "baseline", NULL, }; +static const char * const hb_h264_profile_names_10bit[] = { + "auto", "high10", NULL, }; +static const char * const hb_h264_level_names[] = { + "auto", "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", + "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL, }; +static const int hb_h264_level_values[] = { + -1, 10, 9, 11, 12, 13, 20, 21, 22, 30, 31, 32, + 40, 41, 42, 50, 51, 52, 0, }; + +// stolen from libx264's x264.h +static const char * const hb_h264_fullrange_names[] = { + "off", "on", NULL, }; +static const char * const hb_h264_vidformat_names[] = { + "component", "pal", "ntsc", "secam", "mac", "undef", NULL, }; +static const char * const hb_h264_colorprim_names[] = { + "", "bt709", "undef", "", "bt470m", "bt470bg", "smpte170m", + "smpte240m", "film", "bt2020", NULL, }; +static const char * const hb_h264_transfer_names[] = { + "", "bt709", "undef", "", "bt470m", "bt470bg", "smpte170m", + "smpte240m", "linear", "log100", "log316", "iec61966-2-4", + "bt1361e", "iec61966-2-1", "bt2020-10", "bt2020-12", NULL, }; +static const char * const hb_h264_colmatrix_names[] = { + "GBR", "bt709", "undef", "", "fcc", "bt470bg", "smpte170m", + "smpte240m", "YCgCo", "bt2020nc", "bt2020c", NULL, }; + +#endif //HB_H264_COMMON_H diff --git a/libhb/handbrake/h265_common.h b/libhb/handbrake/h265_common.h new file mode 100644 index 000000000..8b5c1072d --- /dev/null +++ b/libhb/handbrake/h265_common.h @@ -0,0 +1,56 @@ +/* h265_common.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_H265_COMMON_H +#define HB_H265_COMMON_H + +#include "handbrake/project.h" + +// inspired by libavcodec/hevc.h +// in HEVC, all "random access point" NAL units are keyframes +#define HB_HEVC_NALU_KEYFRAME(nal_unit_type) (((nal_unit_type) >= 16) && ((nal_unit_type) <= 23)) + +static const char * const hb_h265_tier_names[] = { + "auto", "main", "high", NULL, }; +static const char * const hb_h265_profile_names_8bit[] = { + "auto", "main", "mainstillpicture", NULL, }; +static const char * const hb_h265_profile_names_10bit[] = { + "auto", "main10", "main10-intra", NULL, }; +#if HB_PROJECT_FEATURE_QSV +static const char * const hb_h265_qsv_profile_names_10bit[] = { + "auto", "main10", NULL, }; +#endif +static const char * const hb_h265_profile_names_12bit[] = { + "auto", "main12", "main12-intra", NULL, }; +static const char * const hb_h265_profile_names_16bit[] = { + "auto", "main16", "main16-intra", NULL, }; +static const char * const hb_h265_level_names[] = { + "auto", "1.0", "2.0", "2.1", "3.0", "3.1", "4.0", "4.1", + "5.0", "5.1", "5.2", "6.0", "6.1", "6.2", NULL, }; +static const int hb_h265_level_values[] = { + -1, 30, 60, 63, 90, 93, 120, 123, + 150, 153, 156, 180, 183, 186, 0, }; + +// stolen from libx265's x265.h +static const char * const hb_h265_fullrange_names[] = { + "limited", "full", NULL, }; +static const char * const hb_h265_vidformat_names[] = { + "component", "pal", "ntsc", "secam", "mac", "undef", NULL, }; +static const char * const hb_h265_colorprim_names[] = { + "", "bt709", "undef", "", "bt470m", "bt470bg", "smpte170m", + "smpte240m", "film", "bt2020", NULL, }; +static const char * const hb_h265_transfer_names[] = { + "", "bt709", "undef", "", "bt470m", "bt470bg", "smpte170m", + "smpte240m", "linear", "log100", "log316", "iec61966-2-4", + "bt1361e", "iec61966-2-1", "bt2020-10", "bt2020-12", NULL, }; +static const char * const hb_h265_colmatrix_names[] = { + "GBR", "bt709", "undef", "", "fcc", "bt470bg", "smpte170m", + "smpte240m", "YCgCo", "bt2020nc", "bt2020c", NULL, }; + +#endif //HB_H265_COMMON_H diff --git a/libhb/handbrake/handbrake.h b/libhb/handbrake/handbrake.h new file mode 100644 index 000000000..6143316d5 --- /dev/null +++ b/libhb/handbrake/handbrake.h @@ -0,0 +1,145 @@ +/* handbrake.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_HB_H +#define HB_HB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "handbrake/common.h" +#include "handbrake/project.h" +#include "handbrake/compat.h" +#include "handbrake/hb_json.h" +#include "handbrake/preset.h" +#include "handbrake/plist.h" +#include "handbrake/param.h" +#include "handbrake/colormap.h" + +/* hb_init() + Initializes a libhb session (launches his own thread, detects CPUs, + etc) */ +#define HB_DEBUG_NONE 0 +#define HB_DEBUG_ALL 1 +void hb_register( hb_work_object_t * ); +void hb_register_logger( void (*log_cb)(const char* message) ); +hb_handle_t * hb_init( int verbose ); +void hb_log_level_set(hb_handle_t *h, int level); + +/* hb_get_version() */ +const char * hb_get_full_description(void); +const char * hb_get_version( hb_handle_t * ); +int hb_get_build( hb_handle_t * ); + +char * hb_dvd_name( char * path ); +void hb_dvd_set_dvdnav( int enable ); + +/* hb_scan() + Scan the specified path. Can be a DVD device, a VIDEO_TS folder or + a VOB file. If title_index is 0, scan all titles. */ +void hb_scan( hb_handle_t *, const char * path, + int title_index, int preview_count, + int store_previews, uint64_t min_duration ); +void hb_scan_stop( hb_handle_t * ); +void hb_force_rescan( hb_handle_t * ); +uint64_t hb_first_duration( hb_handle_t * ); + +/* hb_get_titles() + Returns the list of valid titles detected by the latest scan. */ +hb_list_t * hb_get_titles( hb_handle_t * ); + +/* hb_get_title_set() + Returns the title set which contains a list of valid titles detected + by the latest scan and title set data. */ +hb_title_set_t * hb_get_title_set( hb_handle_t * ); + +/* hb_detect_comb() + Analyze a frame for interlacing artifacts, returns true if they're found. + Taken from Thomas Oestreich's 32detect filter in the Transcode project. */ +int hb_detect_comb( hb_buffer_t * buf, int color_equal, int color_diff, int threshold, int prog_equal, int prog_diff, int prog_threshold ); + +// JJJ: title->job? +int hb_save_preview( hb_handle_t * h, int title, int preview, + hb_buffer_t *buf ); +hb_buffer_t * hb_read_preview( hb_handle_t * h, hb_title_t *title, + int preview ); +hb_image_t * hb_get_preview2(hb_handle_t * h, int title_idx, int picture, + hb_geometry_settings_t *geo, int deinterlace); +void hb_set_anamorphic_size2(hb_geometry_t *src_geo, + hb_geometry_settings_t *geo, + hb_geometry_t *result); +void hb_add_filter_dict( hb_job_t * job, hb_filter_object_t * filter, + const hb_dict_t * settings_in ); +void hb_add_filter( hb_job_t * job, hb_filter_object_t * filter, + const char * settings ); +void hb_add_filter2( hb_value_array_t * list, hb_dict_t * filter ); + +/* Handling jobs */ +int hb_count( hb_handle_t * ); +hb_job_t * hb_job( hb_handle_t *, int ); +int hb_add( hb_handle_t *, hb_job_t * ); +void hb_rem( hb_handle_t *, hb_job_t * ); + +hb_title_t * hb_find_title_by_index( hb_handle_t *h, int title_index ); +hb_job_t * hb_job_init_by_index( hb_handle_t *h, int title_index ); +hb_job_t * hb_job_init( hb_title_t * title ); +void hb_job_close( hb_job_t ** job ); + +void hb_start( hb_handle_t * ); +void hb_pause( hb_handle_t * ); +void hb_resume( hb_handle_t * ); +void hb_stop( hb_handle_t * ); + +void hb_system_sleep_allow(hb_handle_t*); +void hb_system_sleep_prevent(hb_handle_t*); + +/* Persistent data between jobs. */ +typedef struct hb_interjob_s +{ + int sequence_id; /* job->sequence_id */ + int frame_count; /* number of frames counted by sync */ + int out_frame_count; /* number of frames counted by render */ + int64_t total_time; /* measured length in 90kHz ticks */ + hb_rational_t vrate; /* measured output vrate */ + + hb_subtitle_t *select_subtitle; /* foreign language scan subtitle */ +} hb_interjob_t; + +hb_interjob_t * hb_interjob_get( hb_handle_t * ); + +/* hb_get_state() + Should be regularly called by the UI (like 5 or 10 times a second). + Look at test/test.c to see how to use it. */ +void hb_get_state( hb_handle_t *, hb_state_t * ); +void hb_get_state2( hb_handle_t *, hb_state_t * ); + +/* hb_close() + Aborts all current jobs if any, frees memory. */ +void hb_close( hb_handle_t ** ); + +/* hb_global_init() + Performs process initialization. */ +int hb_global_init(void); +int hb_global_init_no_hardware(void); +/* hb_global_close() + Performs final cleanup for the process. */ +void hb_global_close(void); + +/* hb_get_instance_id() + Return the unique instance id of an libhb instance created by hb_init. */ +int hb_get_instance_id( hb_handle_t * h ); + +int is_hardware_disabled(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libhb/handbrake/hb_dict.h b/libhb/handbrake/hb_dict.h new file mode 100644 index 000000000..5d8a188e0 --- /dev/null +++ b/libhb/handbrake/hb_dict.h @@ -0,0 +1,169 @@ +/* hb_dict.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ +#if !defined(HB_DICT_H) +#define HB_DICT_H + +#include "handbrake/hbtypes.h" +#include <jansson.h> + +#define HB_VALUE_TYPE_DICT JSON_OBJECT +#define HB_VALUE_TYPE_ARRAY JSON_ARRAY +#define HB_VALUE_TYPE_STRING JSON_STRING +#define HB_VALUE_TYPE_INT JSON_INTEGER +#define HB_VALUE_TYPE_DOUBLE JSON_REAL +#define HB_VALUE_TYPE_NULL JSON_NULL +#define HB_VALUE_TYPE_BOOL 0xff + +#define HB_DICT_ITER_DONE NULL + +typedef int hb_value_type_t; +typedef json_t hb_value_t; +typedef hb_value_t hb_dict_t; +typedef hb_value_t hb_value_array_t; +typedef void* hb_dict_iter_t; + +/* A dictionary implementation. + * + * an hb_dict_t must be initialized with hb_dict_init() before use. + * + * "key" must be a string with non-zero length (NULL and "" are invalid keys). + * "value" must be an hb_value_t* + */ +hb_dict_t * hb_dict_init(void); +/* free dictionary and release references to all values it contains */ +void hb_dict_free(hb_dict_t ** dict_ptr); +/* return number of member elements in the dictionary */ +int hb_dict_elements(hb_dict_t * dict); +/* add value to dictionary. dictionary takes ownership of value */ +void hb_dict_set(hb_dict_t * dict, const char * key, + hb_value_t * value); +void hb_dict_merge(hb_dict_t * dict, hb_dict_t *value); +void hb_dict_case_set(hb_dict_t * dict, const char *key, + hb_value_t *value); +/* remove value from dictionary. releases reference to value */ +int hb_dict_remove(hb_dict_t * dict, const char * key); +/* get value from dictionary. value has borrowed reference */ +hb_value_t * hb_dict_get(const hb_dict_t * dict, const char * key); +int hb_dict_extract_int(int *dst, + const hb_dict_t * dict, + const char * key); +int hb_dict_extract_double(double *dst, + const hb_dict_t * dict, + const char * key); +int hb_dict_extract_bool(int *dst, + const hb_dict_t * dict, + const char * key); +int hb_dict_extract_string(char **dst, + const hb_dict_t * dict, + const char * key); +int hb_dict_extract_rational(hb_rational_t *dst, + const hb_dict_t * dict, + const char * key); +int hb_dict_extract_int_array(int *dst, int count, + const hb_dict_t * dict, + const char * key); + +/* dict iterator + * hb_dict_iter_init(dict) returns an iter to the first key/value in the dict + * hb_dict_iter_next(dict, iter) returns an iter to the next key/value + * HB_DICT_ITER_DONE if the end of the dictionary was reached. + */ +hb_dict_iter_t hb_dict_iter_init(const hb_dict_t *dict); +hb_dict_iter_t hb_dict_iter_next(const hb_dict_t *dict, hb_dict_iter_t iter); +int hb_dict_iter_next_ex(const hb_dict_t *dict, + hb_dict_iter_t *iter, + const char **key, hb_value_t **val); +/* get key from iter */ +const char * hb_dict_iter_key(const hb_dict_iter_t iter); +/* get value from iter. value has borrowed reference */ +hb_value_t * hb_dict_iter_value(const hb_dict_iter_t iter); + +/* hb_value_array_t */ +hb_value_array_t * hb_value_array_init(void); +/* remove all elements of array */ +void hb_value_array_clear(hb_value_array_t *array); +/* get value from array. value has borrowed reference */ +hb_value_t * hb_value_array_get(const hb_value_array_t *array, int index); +/* replace value at index in array. array takes ownership of new value */ +void hb_value_array_set(hb_value_array_t *array, int index, + hb_value_t *value); +/* insert value at index in array. values move up. + * array takes ownership of new value */ +void hb_value_array_insert(hb_value_array_t *array, int index, + hb_value_t *value); +/* append value to array. array takes ownership of new value */ +void hb_value_array_append(hb_value_array_t *array, + hb_value_t *value); +/* remove value from array. releases reference to value */ +void hb_value_array_remove(hb_value_array_t *array, int index); +/* clears dst and performs a deep copy */ +void hb_value_array_copy(hb_value_array_t *dst, + const hb_value_array_t *src, int count); +/* appends copy of value to array. if value is an array, appends a copy of + * each element to array */ +void hb_value_array_concat(hb_value_array_t *array, + hb_value_t *value); +size_t hb_value_array_len(const hb_value_array_t *array); + +/* hb_value_t */ +int hb_value_type(const hb_value_t *value); +int hb_value_is_number(const hb_value_t *value); +hb_value_t * hb_value_dup(const hb_value_t *value); +hb_value_t * hb_value_incref(hb_value_t *value); +void hb_value_decref(hb_value_t *value); +void hb_value_free(hb_value_t **value); + +/* Create new hb_value_t */ +hb_value_t * hb_value_null(void); +hb_value_t * hb_value_string(const char *value); +hb_value_t * hb_value_int(json_int_t value); +hb_value_t * hb_value_double(double value); +hb_value_t * hb_value_bool(int value); +hb_value_t * hb_value_json(const char *json); +hb_value_t * hb_value_read_json(const char *path); + +/* Transform hb_value_t from one type to another */ +hb_value_t * hb_value_xform(const hb_value_t *value, int type); + +/* Extract values */ +/* hb_value_t must be of type HB_VALUE_TYPE_STRING */ +const char * hb_value_get_string(const hb_value_t *value); +/* hb_value_t may be of any type, automatic conversion performed */ +json_int_t hb_value_get_int(const hb_value_t *value); +double hb_value_get_double(const hb_value_t *value); +int hb_value_get_bool(const hb_value_t *value); +/* converts value type and returns an allocated string representation. + * caller must free the returned string */ +char * hb_value_get_string_xform(const hb_value_t *value); +/* converts value to json string */ +char * hb_value_get_json(const hb_value_t *value); +/* write json representation to a file */ +int hb_value_write_file_json(hb_value_t *value, FILE *file); +int hb_value_write_json(hb_value_t *value, const char *path); + +/* specialized dict functions */ +/* + * hb_encopts_to_dict() converts an op1=val1:opt2=val2:opt3=val3 type string to + * an hb_dict_t dictionary. */ +hb_dict_t * hb_encopts_to_dict(const char * encopts, int encoder); +char * hb_dict_to_encopts(const hb_dict_t * dict); + +/* convenience macros */ +#define hb_dict_get_string(dict, key) hb_value_get_string(hb_dict_get(dict, key)) +#define hb_dict_get_int(dict, key) hb_value_get_int(hb_dict_get(dict, key)) +#define hb_dict_get_double(dict, key) hb_value_get_double(hb_dict_get(dict, key)) +#define hb_dict_get_bool(dict, key) hb_value_get_bool(hb_dict_get(dict, key)) + +#define hb_dict_set_string(dict, key, val) hb_dict_set(dict, key, hb_value_string(val)) +#define hb_dict_set_int(dict, key, val) hb_dict_set(dict, key, hb_value_int(val)) +#define hb_dict_set_double(dict, key, val) hb_dict_set(dict, key, hb_value_double(val)) +#define hb_dict_set_bool(dict, key, val) hb_dict_set(dict, key, hb_value_bool(val)) + + +#endif // !defined(HB_DICT_H) diff --git a/libhb/handbrake/hb_json.h b/libhb/handbrake/hb_json.h new file mode 100644 index 000000000..aac3223f7 --- /dev/null +++ b/libhb/handbrake/hb_json.h @@ -0,0 +1,46 @@ +/* hb_json.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_JSON_H +#define HB_JSON_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "handbrake/common.h" + +hb_dict_t * hb_state_to_dict( hb_state_t * state); +hb_dict_t * hb_job_to_dict( const hb_job_t * job ); +hb_dict_t * hb_title_to_dict( hb_handle_t *h, int title_index ); +hb_dict_t * hb_title_set_to_dict( const hb_title_set_t * title_set ); + +char * hb_get_title_set_json(hb_handle_t * h); +char * hb_title_to_json( hb_handle_t *h, int title_index ); +char * hb_job_init_json(hb_handle_t *h, int title_index); +char * hb_preset_job_init_json(hb_handle_t *h, int title_index, + const char *json_preset); +hb_job_t * hb_dict_to_job( hb_handle_t * h, hb_dict_t *dict ); +char * hb_job_to_json(const hb_job_t * job); +hb_job_t * hb_json_to_job(hb_handle_t * h, const char * json_job); +int hb_add_json(hb_handle_t *h, const char * json_job); +char * hb_set_anamorphic_size_json(const char * json_param); +char * hb_get_state_json(hb_handle_t * h); +hb_image_t * hb_json_to_image(char *json_image); +char * hb_get_preview_params_json(int title_idx, int preview_idx, + int deinterlace, hb_geometry_settings_t *settings); +char * hb_get_preview_json(hb_handle_t * h, const char *json_param); +void hb_json_job_scan( hb_handle_t * h, const char * json_job ); +hb_dict_t * hb_version_dict(void); + +#ifdef __cplusplus +} +#endif + +#endif // HB_JSON_H diff --git a/libhb/handbrake/hbavfilter.h b/libhb/handbrake/hbavfilter.h new file mode 100644 index 000000000..319b48871 --- /dev/null +++ b/libhb/handbrake/hbavfilter.h @@ -0,0 +1,42 @@ +/* hbavfilter.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_AVFILTER_H +#define HB_AVFILTER_H + +#include "handbrake/common.h" + +typedef struct hb_avfilter_graph_s hb_avfilter_graph_t; + +hb_avfilter_graph_t * +hb_avfilter_graph_init(hb_value_t * settings, hb_filter_init_t * init); + +void hb_avfilter_graph_close(hb_avfilter_graph_t ** _g); + +const char * +hb_avfilter_graph_settings(hb_avfilter_graph_t * graph); + +void hb_avfilter_graph_update_init(hb_avfilter_graph_t * graph, + hb_filter_init_t * init); + +int hb_avfilter_add_frame(hb_avfilter_graph_t * graph, AVFrame * frame); + +int hb_avfilter_get_frame(hb_avfilter_graph_t * graph, AVFrame * frame); + +int hb_avfilter_add_buf(hb_avfilter_graph_t * graph, hb_buffer_t * in); + +hb_buffer_t * +hb_avfilter_get_buf(hb_avfilter_graph_t * graph); + +void hb_avfilter_append_dict(hb_value_array_t * filters, + const char * name, hb_dict_t * settings); + +void hb_avfilter_combine(hb_list_t * list); + +#endif // HB_AVFILTER_H diff --git a/libhb/handbrake/hbffmpeg.h b/libhb/handbrake/hbffmpeg.h new file mode 100644 index 000000000..6357dcd9c --- /dev/null +++ b/libhb/handbrake/hbffmpeg.h @@ -0,0 +1,62 @@ +/* hbffmpeg.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_FFMPEG_H +#define HB_FFMPEG_H + +#include "libavcodec/avcodec.h" +#include "libavformat/avformat.h" +#include "libavutil/channel_layout.h" +#include "libavutil/imgutils.h" +#include "libavutil/mathematics.h" +#include "libavutil/opt.h" +#include "libavutil/avutil.h" +#include "libavutil/downmix_info.h" +#include "libavutil/display.h" +#include "libswscale/swscale.h" +#include "libswresample/swresample.h" +#include "handbrake/common.h" + +#define HB_FFMPEG_THREADS_AUTO (-1) // let hb_avcodec_open() decide thread_count + +void hb_avcodec_init(void); +int hb_avcodec_open(AVCodecContext *, AVCodec *, AVDictionary **, int); +void hb_avcodec_free_context(AVCodecContext **avctx); +const char* const* hb_av_preset_get_names(int encoder); + +uint64_t hb_ff_mixdown_xlat(int hb_mixdown, int *downmix_mode); +void hb_ff_set_sample_fmt(AVCodecContext *, AVCodec *, enum AVSampleFormat); + +int hb_sws_get_colorspace(int color_matrix); +int hb_colr_pri_hb_to_ff(int colr_prim); +int hb_colr_tra_hb_to_ff(int colr_tra); +int hb_colr_mat_hb_to_ff(int colr_mat); +int hb_colr_pri_ff_to_hb(int colr_prim); +int hb_colr_tra_ff_to_hb(int colr_tra); +int hb_colr_mat_ff_to_hb(int colr_mat); + +struct SwsContext* +hb_sws_get_context(int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, int colorspace); + +static const char* const hb_vce_preset_names[] = { "speed", "balanced", "quality", NULL, }; + +void hb_video_buffer_to_avframe(AVFrame *frame, hb_buffer_t * buf); +hb_buffer_t * hb_avframe_to_video_buffer(AVFrame *frame, + AVRational time_base); +void hb_avframe_set_video_buffer_flags(hb_buffer_t * buf, + AVFrame *frame, + AVRational time_base); + +int hb_av_encoder_present(int encoder); +const char* const* hb_av_profile_get_names(int encoder); +const char* const* hb_av_level_get_names(int encoder); + +#endif diff --git a/libhb/handbrake/hbtypes.h b/libhb/handbrake/hbtypes.h new file mode 100644 index 000000000..127f9d50c --- /dev/null +++ b/libhb/handbrake/hbtypes.h @@ -0,0 +1,48 @@ +/* hbtypes.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_TYPES_H +#define HB_TYPES_H + +typedef struct hb_handle_s hb_handle_t; +typedef struct hb_list_s hb_list_t; +typedef struct hb_buffer_list_s hb_buffer_list_t; +typedef struct hb_rate_s hb_rate_t; +typedef struct hb_dither_s hb_dither_t; +typedef struct hb_mixdown_s hb_mixdown_t; +typedef struct hb_encoder_s hb_encoder_t; +typedef struct hb_container_s hb_container_t; +typedef struct hb_rational_s hb_rational_t; +typedef struct hb_geometry_s hb_geometry_t; +typedef struct hb_geometry_settings_s hb_geometry_settings_t; +typedef struct hb_image_s hb_image_t; +typedef struct hb_job_s hb_job_t; +typedef struct hb_title_set_s hb_title_set_t; +typedef struct hb_title_s hb_title_t; +typedef struct hb_chapter_s hb_chapter_t; +typedef struct hb_audio_s hb_audio_t; +typedef struct hb_audio_config_s hb_audio_config_t; +typedef struct hb_subtitle_s hb_subtitle_t; +typedef struct hb_subtitle_config_s hb_subtitle_config_t; +typedef struct hb_attachment_s hb_attachment_t; +typedef struct hb_metadata_s hb_metadata_t; +typedef struct hb_coverart_s hb_coverart_t; +typedef struct hb_state_s hb_state_t; +typedef struct hb_esconfig_s hb_esconfig_t; +typedef struct hb_work_private_s hb_work_private_t; +typedef struct hb_work_object_s hb_work_object_t; +typedef struct hb_filter_private_s hb_filter_private_t; +typedef struct hb_filter_object_s hb_filter_object_t; +typedef struct hb_buffer_s hb_buffer_t; +typedef struct hb_buffer_settings_s hb_buffer_settings_t; +typedef struct hb_image_format_s hb_image_format_t; +typedef struct hb_fifo_s hb_fifo_t; +typedef struct hb_lock_s hb_lock_t; + +#endif // HB_TYPES_H diff --git a/libhb/handbrake/internal.h b/libhb/handbrake/internal.h new file mode 100644 index 000000000..93ae27dca --- /dev/null +++ b/libhb/handbrake/internal.h @@ -0,0 +1,541 @@ +/* internal.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_INTERNAL_H +#define HB_INTERNAL_H + +#include "handbrake/project.h" +#include "handbrake/hbffmpeg.h" +#if HB_PROJECT_FEATURE_QSV +#include "handbrake/qsv_libav.h" +#endif + +/*********************************************************************** + * common.c + **********************************************************************/ +void hb_log( char * log, ... ) HB_WPRINTF(1,2); +extern int global_verbosity_level; // Global variable for hb_deep_log +typedef enum hb_debug_level_s +{ + HB_SUPPORT_LOG = 1, // helpful in tech support + HB_HOUSEKEEPING_LOG = 2, // stuff we hate scrolling through + HB_GRANULAR_LOG = 3 // sample-by-sample +} hb_debug_level_t; +void hb_valog( hb_debug_level_t level, const char * prefix, const char * log, va_list args) HB_WPRINTF(3,0); +void hb_deep_log( hb_debug_level_t level, char * log, ... ) HB_WPRINTF(2,3); +void hb_error( char * fmt, ...) HB_WPRINTF(1,2); +void hb_hexdump( hb_debug_level_t level, const char * label, const uint8_t * data, int len ); + +int hb_list_bytes( hb_list_t * ); +void hb_list_seebytes( hb_list_t * l, uint8_t * dst, int size ); +void hb_list_getbytes( hb_list_t * l, uint8_t * dst, int size, + uint64_t * pts, uint64_t * pos ); +void hb_list_empty( hb_list_t ** ); + +hb_title_t * hb_title_init( char * dvd, int index ); +void hb_title_close( hb_title_t ** ); + +/*********************************************************************** + * hb.c + **********************************************************************/ +int hb_get_pid( hb_handle_t * ); +void hb_set_state( hb_handle_t *, hb_state_t * ); +void hb_set_work_error( hb_handle_t * h, hb_error_code err ); +void hb_job_setup_passes(hb_handle_t *h, hb_job_t *job, hb_list_t *list_pass); + +/*********************************************************************** + * fifo.c + **********************************************************************/ + +/* + * Holds a packet of data that is moving through the transcoding process. + * + * May have metadata associated with it via extra fields + * that are conditionally used depending on the type of packet. + */ +struct hb_buffer_settings_s +{ + enum { OTHER_BUF, AUDIO_BUF, VIDEO_BUF, SUBTITLE_BUF, FRAME_BUF } type; + + int id; // ID of the track that the packet comes from + int64_t start; // start time of frame + double duration; // Actual duration, may be fractional ticks + int64_t stop; // stop time of frame + int64_t renderOffset; // DTS used by b-frame offsets in muxmp4 + int64_t pcr; + int scr_sequence; // The SCR sequence that this buffer's + // timestamps are referenced to + int split; + uint8_t discontinuity; + int new_chap; // Video packets: if non-zero, is the index of the chapter whose boundary was crossed + +#define HB_FRAME_IDR 0x01 +#define HB_FRAME_I 0x02 +#define HB_FRAME_AUDIO 0x04 +#define HB_FRAME_SUBTITLE 0x08 +#define HB_FRAME_P 0x10 +#define HB_FRAME_B 0x20 +#define HB_FRAME_BREF 0x40 +#define HB_FRAME_MASK_KEY 0x0F +#define HB_FRAME_MASK_REF 0xF0 + uint8_t frametype; + +// Picture flags used by filters +#ifndef PIC_FLAG_TOP_FIELD_FIRST +#define PIC_FLAG_TOP_FIELD_FIRST 0x0008 +#endif +#ifndef PIC_FLAG_PROGRESSIVE_FRAME +#define PIC_FLAG_PROGRESSIVE_FRAME 0x0010 +#endif +#ifndef PIC_FLAG_REPEAT_FIRST_FIELD +#define PIC_FLAG_REPEAT_FIRST_FIELD 0x0100 +#endif +#define PIC_FLAG_REPEAT_FRAME 0x0200 +#define HB_BUF_FLAG_EOF 0x0400 +#define HB_BUF_FLAG_EOS 0x0800 +#define HB_FLAG_FRAMETYPE_KEY 0x1000 +#define HB_FLAG_FRAMETYPE_REF 0x2000 +#define HB_FLAG_DISCARD 0x4000 + uint16_t flags; + +#define HB_COMB_NONE 0 +#define HB_COMB_LIGHT 1 +#define HB_COMB_HEAVY 2 + uint8_t combed; +}; + +struct hb_image_format_s +{ + int x; + int y; + int width; + int height; + int fmt; + int color_prim; + int color_transfer; + int color_matrix; + int color_range; + int max_plane; + int window_width; + int window_height; +}; + +struct hb_buffer_s +{ + int size; // size of this packet + int alloc; // used internally by the packet allocator (hb_buffer_init) + uint8_t * data; // packet data + int offset; // used internally by packet lists (hb_list_t) + + hb_buffer_settings_t s; + hb_image_format_t f; + + struct buffer_plane + { + uint8_t * data; + int stride; + int width; + int height; + int height_stride; + int size; + } plane[4]; // 3 Color components + alpha + +#if HB_PROJECT_FEATURE_QSV + struct qsv + { + void * qsv_atom; + AVFrame * frame; + void * filter_details; + hb_qsv_context * ctx; + } qsv_details; +#endif + + // libav may attach AV_PKT_DATA_PALETTE side data to some AVPackets + // Store this data here when read and pass to decoder. + hb_buffer_t * palette; + + // Packets in a list: + // the next packet in the list + hb_buffer_t * next; +}; + +void hb_buffer_pool_init( void ); +void hb_buffer_pool_free( void ); + +hb_buffer_t * hb_buffer_init( int size ); +hb_buffer_t * hb_buffer_eof_init( void ); +hb_buffer_t * hb_frame_buffer_init( int pix_fmt, int w, int h); +void hb_frame_buffer_blank_stride(hb_buffer_t * buf); +void hb_frame_buffer_mirror_stride(hb_buffer_t * buf); +void hb_buffer_init_planes( hb_buffer_t * b ); +void hb_buffer_realloc( hb_buffer_t *, int size ); +void hb_video_buffer_realloc( hb_buffer_t * b, int w, int h ); +void hb_buffer_reduce( hb_buffer_t * b, int size ); +void hb_buffer_close( hb_buffer_t ** ); +hb_buffer_t * hb_buffer_dup( const hb_buffer_t * src ); +int hb_buffer_copy( hb_buffer_t * dst, const hb_buffer_t * src ); +void hb_buffer_swap_copy( hb_buffer_t *src, hb_buffer_t *dst ); +hb_image_t * hb_image_init(int pix_fmt, int width, int height); +hb_image_t * hb_buffer_to_image(hb_buffer_t *buf); +int hb_picture_fill(uint8_t *data[], int stride[], hb_buffer_t *b); +int hb_picture_crop(uint8_t *data[], int stride[], hb_buffer_t *b, + int top, int left); + +hb_fifo_t * hb_fifo_init( int capacity, int thresh ); +void hb_fifo_register_full_cond( hb_fifo_t * f, hb_cond_t * c ); +int hb_fifo_size( hb_fifo_t * ); +int hb_fifo_size_bytes( hb_fifo_t * ); +int hb_fifo_is_full( hb_fifo_t * ); +float hb_fifo_percent_full( hb_fifo_t * f ); +hb_buffer_t * hb_fifo_get( hb_fifo_t * ); +hb_buffer_t * hb_fifo_get_wait( hb_fifo_t * ); +hb_buffer_t * hb_fifo_see( hb_fifo_t * ); +hb_buffer_t * hb_fifo_see_wait( hb_fifo_t * ); +hb_buffer_t * hb_fifo_see2( hb_fifo_t * ); +void hb_fifo_push( hb_fifo_t *, hb_buffer_t * ); +void hb_fifo_push_wait( hb_fifo_t *, hb_buffer_t * ); +int hb_fifo_full_wait( hb_fifo_t * f ); +void hb_fifo_push_head( hb_fifo_t *, hb_buffer_t * ); +void hb_fifo_close( hb_fifo_t ** ); +void hb_fifo_flush( hb_fifo_t * f ); + +static inline int hb_image_stride( int pix_fmt, int width, int plane ) +{ + int linesize = av_image_get_linesize( pix_fmt, width, plane ); + + // Make buffer SIMD friendly. + // Decomb requires stride aligned to 32 bytes + // TODO: eliminate extra buffer copies in decomb + linesize = MULTIPLE_MOD_UP( linesize, 32 ); + return linesize; +} + +static inline int hb_image_width(int pix_fmt, int width, int plane) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + + if (desc != NULL && (plane == 1 || plane == 2)) + { + // The wacky arithmetic assures rounding up. + width = -((-width) >> desc->log2_chroma_w); + } + + return width; +} + +static inline int hb_image_height_stride(int pix_fmt, int height, int plane) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + + // Decomb requires 6 extra lines and stride aligned to 32 bytes + height = MULTIPLE_MOD_UP(height + 6, 32); + if (desc != NULL && (plane == 1 || plane == 2)) + { + height = height >> desc->log2_chroma_h; + } + + return height; +} + +static inline int hb_image_height(int pix_fmt, int height, int plane) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + + if (desc != NULL && (plane == 1 || plane == 2)) + { + // The wacky arithmetic assures rounding up. + height = -((-height) >> desc->log2_chroma_h); + } + + return height; +} + +// this routine gets a buffer for an uncompressed YUV420 video frame +// with dimensions width x height. +static inline hb_buffer_t * hb_video_buffer_init( int width, int height ) +{ + return hb_frame_buffer_init( AV_PIX_FMT_YUV420P, width, height ); +} + +/*********************************************************************** + * Threads: scan.c, work.c, reader.c, muxcommon.c + **********************************************************************/ +hb_thread_t * hb_scan_init( hb_handle_t *, volatile int * die, + const char * path, int title_index, + hb_title_set_t * title_set, int preview_count, + int store_previews, uint64_t min_duration ); +hb_thread_t * hb_work_init( hb_list_t * jobs, + volatile int * die, hb_error_code * error, hb_job_t ** job ); +void ReadLoop( void * _w ); +void hb_work_loop( void * ); +hb_work_object_t * hb_muxer_init( hb_job_t * ); +hb_work_object_t * hb_get_work( hb_handle_t *, int ); +hb_work_object_t * hb_audio_decoder( hb_handle_t *, int ); +hb_work_object_t * hb_audio_encoder( hb_handle_t *, int ); +hb_work_object_t * hb_video_decoder( hb_handle_t *, int, int ); +hb_work_object_t * hb_video_encoder( hb_handle_t *, int ); + +/*********************************************************************** + * sync.c + **********************************************************************/ +hb_work_object_t * hb_sync_init( hb_job_t * job ); + +/*********************************************************************** + * mpegdemux.c + **********************************************************************/ +typedef struct { + int64_t last_scr; /* unadjusted SCR from most recent pack */ + int64_t scr_delta; + int64_t last_pts; /* last pts we saw */ + int scr_changes; /* number of SCR discontinuities */ + int new_chap; +} hb_psdemux_t; + +typedef void (*hb_muxer_t)(hb_buffer_t *, hb_buffer_list_t *, hb_psdemux_t*); + +void hb_demux_ps(hb_buffer_t * ps_buf, hb_buffer_list_t * es_list, hb_psdemux_t *); +void hb_demux_ts(hb_buffer_t * ps_buf, hb_buffer_list_t * es_list, hb_psdemux_t *); +void hb_demux_null(hb_buffer_t * ps_buf, hb_buffer_list_t * es_list, hb_psdemux_t *); + +extern const hb_muxer_t hb_demux[]; + +/*********************************************************************** + * batch.c + **********************************************************************/ +typedef struct hb_batch_s hb_batch_t; + +hb_batch_t * hb_batch_init( hb_handle_t *h, char * path ); +void hb_batch_close( hb_batch_t ** _d ); +int hb_batch_title_count( hb_batch_t * d ); +hb_title_t * hb_batch_title_scan( hb_batch_t * d, int t ); + +/*********************************************************************** + * dvd.c + **********************************************************************/ +typedef struct hb_bd_s hb_bd_t; +typedef union hb_dvd_s hb_dvd_t; +typedef struct hb_stream_s hb_stream_t; + +hb_dvd_t * hb_dvd_init( hb_handle_t * h, const char * path ); +int hb_dvd_title_count( hb_dvd_t * ); +hb_title_t * hb_dvd_title_scan( hb_dvd_t *, int title, uint64_t min_duration ); +int hb_dvd_start( hb_dvd_t *, hb_title_t *title, int chapter ); +void hb_dvd_stop( hb_dvd_t * ); +int hb_dvd_seek( hb_dvd_t *, float ); +hb_buffer_t * hb_dvd_read( hb_dvd_t * ); +int hb_dvd_chapter( hb_dvd_t * ); +int hb_dvd_is_break( hb_dvd_t * d ); +void hb_dvd_close( hb_dvd_t ** ); +int hb_dvd_angle_count( hb_dvd_t * d ); +void hb_dvd_set_angle( hb_dvd_t * d, int angle ); +int hb_dvd_main_feature( hb_dvd_t * d, hb_list_t * list_title ); + +hb_bd_t * hb_bd_init( hb_handle_t *h, const char * path ); +int hb_bd_title_count( hb_bd_t * d ); +hb_title_t * hb_bd_title_scan( hb_bd_t * d, int t, uint64_t min_duration ); +int hb_bd_start( hb_bd_t * d, hb_title_t *title ); +void hb_bd_stop( hb_bd_t * d ); +int hb_bd_seek( hb_bd_t * d, float f ); +int hb_bd_seek_pts( hb_bd_t * d, uint64_t pts ); +int hb_bd_seek_chapter( hb_bd_t * d, int chapter ); +hb_buffer_t * hb_bd_read( hb_bd_t * d ); +int hb_bd_chapter( hb_bd_t * d ); +void hb_bd_close( hb_bd_t ** _d ); +void hb_bd_set_angle( hb_bd_t * d, int angle ); +int hb_bd_main_feature( hb_bd_t * d, hb_list_t * list_title ); + +hb_stream_t * hb_bd_stream_open( hb_handle_t *h, hb_title_t *title ); +void hb_ts_stream_reset(hb_stream_t *stream); +hb_stream_t * hb_stream_open(hb_handle_t *h, const char * path, + hb_title_t *title, int scan); +void hb_stream_close( hb_stream_t ** ); +hb_title_t * hb_stream_title_scan( hb_stream_t *, hb_title_t *); +hb_buffer_t * hb_stream_read( hb_stream_t * ); +int hb_stream_seek( hb_stream_t *, float ); +int hb_stream_seek_ts( hb_stream_t * stream, int64_t ts ); +int hb_stream_seek_chapter( hb_stream_t *, int ); +int hb_stream_chapter( hb_stream_t * ); + +hb_buffer_t * hb_ts_decode_pkt( hb_stream_t *stream, const uint8_t * pkt, + int chapter, int discontinuity ); +void hb_stream_set_need_keyframe( hb_stream_t *stream, int need_keyframe ); + + +#define STR4_TO_UINT32(p) \ + ((((const uint8_t*)(p))[0] << 24) | \ + (((const uint8_t*)(p))[1] << 16) | \ + (((const uint8_t*)(p))[2] << 8) | \ + ((const uint8_t*)(p))[3]) + +/*********************************************************************** + * Work objects + **********************************************************************/ +#define HB_CONFIG_MAX_SIZE (2*8192) +struct hb_esconfig_s +{ + int init_delay; + + union + { + + struct + { + uint8_t bytes[HB_CONFIG_MAX_SIZE]; + int length; + } mpeg4; + + struct + { + uint8_t sps[HB_CONFIG_MAX_SIZE]; + int sps_length; + uint8_t pps[HB_CONFIG_MAX_SIZE]; + int pps_length; + } h264; + + struct + { + uint8_t headers[HB_CONFIG_MAX_SIZE]; + int headers_length; + } h265; + + struct + { + uint8_t headers[3][HB_CONFIG_MAX_SIZE]; + } theora; + + struct + { + uint8_t bytes[HB_CONFIG_MAX_SIZE]; + int length; + } extradata; + + struct + { + uint8_t headers[3][HB_CONFIG_MAX_SIZE]; + char *language; + } vorbis; + }; +}; + +enum +{ + WORK_NONE = 0, + WORK_SYNC_VIDEO, + WORK_SYNC_AUDIO, + WORK_SYNC_SUBTITLE, + WORK_DECCC608, + WORK_DECVOBSUB, + WORK_DECSRTSUB, + WORK_DECUTF8SUB, + WORK_DECTX3GSUB, + WORK_DECSSASUB, + WORK_ENCVOBSUB, + WORK_RENDER, + WORK_ENCAVCODEC, + WORK_ENCQSV, + WORK_ENCX264, + WORK_ENCX265, + WORK_ENCTHEORA, + WORK_DECAVCODEC, + WORK_DECAVCODECV, + WORK_DECLPCM, + WORK_ENCLAME, + WORK_ENCVORBIS, + WORK_ENC_CA_AAC, + WORK_ENC_CA_HAAC, + WORK_ENCAVCODEC_AUDIO, + WORK_MUX, + WORK_READER, + WORK_DECPGSSUB +}; + +extern hb_filter_object_t hb_filter_detelecine; +extern hb_filter_object_t hb_filter_comb_detect; +extern hb_filter_object_t hb_filter_decomb; +extern hb_filter_object_t hb_filter_deinterlace; +extern hb_filter_object_t hb_filter_vfr; +extern hb_filter_object_t hb_filter_deblock; +extern hb_filter_object_t hb_filter_denoise; +extern hb_filter_object_t hb_filter_nlmeans; +extern hb_filter_object_t hb_filter_chroma_smooth; +extern hb_filter_object_t hb_filter_render_sub; +extern hb_filter_object_t hb_filter_crop_scale; +extern hb_filter_object_t hb_filter_rotate; +extern hb_filter_object_t hb_filter_grayscale; +extern hb_filter_object_t hb_filter_pad; +extern hb_filter_object_t hb_filter_lapsharp; +extern hb_filter_object_t hb_filter_unsharp; +extern hb_filter_object_t hb_filter_avfilter; +extern hb_filter_object_t hb_filter_mt_frame; +extern hb_filter_object_t hb_filter_colorspace; + +#if HB_PROJECT_FEATURE_QSV +extern hb_filter_object_t hb_filter_qsv; +extern hb_filter_object_t hb_filter_qsv_pre; +extern hb_filter_object_t hb_filter_qsv_post; +#endif + +extern hb_work_object_t * hb_objects; + +#define HB_WORK_IDLE 0 +#define HB_WORK_OK 1 +#define HB_WORK_ERROR 2 +#define HB_WORK_DONE 3 + +/*********************************************************************** + * Muxers + **********************************************************************/ +typedef struct hb_mux_object_s hb_mux_object_t; +typedef struct hb_mux_data_s hb_mux_data_t; + +#define HB_MUX_COMMON \ + int (*init) ( hb_mux_object_t * ); \ + int (*mux) ( hb_mux_object_t *, hb_mux_data_t *, \ + hb_buffer_t * ); \ + int (*end) ( hb_mux_object_t * ); + +#define DECLARE_MUX( a ) \ + hb_mux_object_t * hb_mux_##a##_init( hb_job_t * ); + +DECLARE_MUX( mp4 ); +DECLARE_MUX( mkv ); +DECLARE_MUX( webm ); +DECLARE_MUX( avformat ); + +void hb_deinterlace(hb_buffer_t *dst, hb_buffer_t *src); + +struct hb_chapter_queue_item_s +{ + int64_t start; + int new_chap; +}; + +struct hb_chapter_queue_s +{ + hb_list_t * list_chapter; +}; + +typedef struct hb_chapter_queue_item_s hb_chapter_queue_item_t; +typedef struct hb_chapter_queue_s hb_chapter_queue_t; + +hb_chapter_queue_t * hb_chapter_queue_init(void); +void hb_chapter_queue_close(hb_chapter_queue_t **_q); +void hb_chapter_enqueue(hb_chapter_queue_t *q, hb_buffer_t *b); +void hb_chapter_dequeue(hb_chapter_queue_t *q, hb_buffer_t *b); + +/* Font names used for rendering subtitles */ +#if defined(SYS_MINGW) +#define HB_FONT_MONO "Lucida Console" +#define HB_FONT_SANS "sans-serif" +#else +#define HB_FONT_MONO "monospace" +#define HB_FONT_SANS "sans-serif" +#endif + +#endif // HB_INTERNAL_H diff --git a/libhb/handbrake/lang.h b/libhb/handbrake/lang.h new file mode 100644 index 000000000..9017de066 --- /dev/null +++ b/libhb/handbrake/lang.h @@ -0,0 +1,65 @@ +/* lang.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_LANG_H +#define HB_LANG_H + +typedef struct iso639_lang_t +{ + char * eng_name; /* Description in English */ + char * native_name; /* Description in native language */ + char * iso639_1; /* ISO-639-1 (2 characters) code */ + char * iso639_2; /* ISO-639-2/t (3 character) code */ + char * iso639_2b; /* ISO-639-2/b code (if different from above) */ + char * iso639; /* Obsolete ISO-639 code (if changed in ISO-639-1) */ +} iso639_lang_t; + +#ifdef __cplusplus +extern "C" { +#endif +/* find language, match any of names in lang struct */ +const iso639_lang_t * lang_lookup( const char * str ); + +/* find language table index, match any of names in lang struct */ +const int lang_lookup_index( const char * str ); + +/* return language for an index into the language table */ +const iso639_lang_t * lang_for_index( int index ); + +/* find language associated with ISO-639-1 language code */ +iso639_lang_t * lang_for_code( int code ); + +/* find language associated with ISO-639-2 language code */ +iso639_lang_t * lang_for_code2( const char *code2 ); + +/* ISO-639-1 code for language */ +int lang_to_code(const iso639_lang_t *lang); + +iso639_lang_t * lang_for_english( const char * english ); + +/* + * Get fake iso639 cooresponding to "Any" + * "Any" is used when a match for any language is desired. + * + * Calling lang_get_next() with pointer returned by lang_get_any() + * returns the first entry in the languages list + */ +const iso639_lang_t* lang_get_any(void); + +/* + * Get the next language in the list. + * Returns NULL if there are no more languages. + * Pass NULL to get the first language in the list. + */ +const iso639_lang_t* lang_get_next(const iso639_lang_t *last); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libhb/handbrake/nal_units.h b/libhb/handbrake/nal_units.h new file mode 100644 index 000000000..0efccc476 --- /dev/null +++ b/libhb/handbrake/nal_units.h @@ -0,0 +1,51 @@ +/* nal_units.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code. + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_NAL_UNITS_H +#define HB_NAL_UNITS_H + +#include <stdint.h> + +#include "handbrake/common.h" + +/* + * Write a NAL unit of the specified size to the provided + * output buffer, using the requested output format. + * Returns the amount (in bytes) of data written to the buffer. + * + * The provided NAL unit must start with the NAL unit header. + * + * Note: the buffer is assumed to be large enough to hold the NAL unit + * as well as any additional data the function may prepend/append to it. + * + * The caller may check the minimum required buffer size by passing a + * NULL buffer to the function and checking the returned size value. + */ +size_t hb_nal_unit_write_annexb(uint8_t *buf, const uint8_t *nal_unit, const size_t nal_unit_size); +size_t hb_nal_unit_write_isomp4(uint8_t *buf, const uint8_t *nal_unit, const size_t nal_unit_size); + +/* + * Search the provided data buffer for NAL units in Annex B format. + * + * Returns a pointer to the start (start code prefix excluded) of the + * first NAL unit found, or NULL if no NAL units were found in the buffer. + * + * On input, size holds the length of the provided data buffer. + * On output, size holds the length of the returned NAL unit. + */ +uint8_t* hb_annexb_find_next_nalu(const uint8_t *start, size_t *size); + +/* + * Returns a newly-allocated buffer holding a copy of the provided + * NAL unit bitstream data, converted to the requested format. + */ +hb_buffer_t* hb_nal_bitstream_annexb_to_mp4(const uint8_t *data, const size_t size); +hb_buffer_t* hb_nal_bitstream_mp4_to_annexb(const uint8_t *data, const size_t size, const uint8_t nal_length_size); + +#endif // HB_NAL_UNITS_H diff --git a/libhb/handbrake/nlmeans.h b/libhb/handbrake/nlmeans.h new file mode 100644 index 000000000..3ed4d7461 --- /dev/null +++ b/libhb/handbrake/nlmeans.h @@ -0,0 +1,27 @@ +/* nlmeans.h + + Copyright (c) 2013 Dirk Farin + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +typedef struct +{ + void (*build_integral)(uint32_t *integral, + int integral_stride, + const uint8_t *src, + const uint8_t *src_pre, + const uint8_t *compare, + const uint8_t *compare_pre, + int w, + int border, + int dst_w, + int dst_h, + int dx, + int dy); +} NLMeansFunctions; + +void nlmeans_init_x86(NLMeansFunctions *functions); diff --git a/libhb/handbrake/nvenc_common.h b/libhb/handbrake/nvenc_common.h new file mode 100644 index 000000000..f7873b882 --- /dev/null +++ b/libhb/handbrake/nvenc_common.h @@ -0,0 +1,11 @@ +/* nvenc_common.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code. + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +int hb_nvenc_h264_available(); +int hb_nvenc_h265_available(); diff --git a/libhb/handbrake/param.h b/libhb/handbrake/param.h new file mode 100644 index 000000000..378c5e578 --- /dev/null +++ b/libhb/handbrake/param.h @@ -0,0 +1,47 @@ +/* param.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ +#ifndef HB_PARAM_H +#define HB_PARAM_H + +typedef struct hb_filter_param_s hb_filter_param_t; + +struct hb_filter_param_s +{ + int index; + const char *name; + const char *short_name; + const char *settings; +}; + +void hb_param_configure_qsv(void); + +hb_dict_t * hb_generate_filter_settings(int filter_id, const char *preset, + const char *tune, const char *custom); +char * hb_generate_filter_settings_json(int filter_id, const char *preset, + const char *tune, const char *custom); + +int hb_validate_param_string(const char *regex_pattern, const char *param_string); +int hb_validate_filter_preset(int filter_id, const char *preset, + const char *tune, const char *custom); +int hb_validate_filter_settings(int filter_id, const hb_dict_t *settings); +int hb_validate_filter_settings_json(int filter_id, const char * json); +int hb_validate_filter_string(int filter_id, const char * filter_str); + +hb_filter_param_t * hb_filter_param_get_presets(int filter_id); +hb_filter_param_t * hb_filter_param_get_tunes(int filter_id); + +char ** hb_filter_get_keys(int filter_id); +char ** hb_filter_get_presets_short_name(int filter_id); +char ** hb_filter_get_presets_name(int filter_id); +char ** hb_filter_get_tunes_short_name(int filter_id); +char ** hb_filter_get_tunes_name(int filter_id); +char * hb_filter_get_presets_json(int filter_id); +char * hb_filter_get_tunes_json(int filter_id); + +#endif // HB_PARAM_H diff --git a/libhb/handbrake/plist.h b/libhb/handbrake/plist.h new file mode 100644 index 000000000..12b51dd2e --- /dev/null +++ b/libhb/handbrake/plist.h @@ -0,0 +1,22 @@ +/* plist.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#if !defined(_HB_PLIST_H_) +#define _HB_PLIST_H_ + +#include <stdio.h> +#include "handbrake/hb_dict.h" + +hb_value_t * hb_plist_parse(const char *buf, size_t len); +hb_value_t * hb_plist_parse_file(const char *filename); +void hb_plist_write(FILE *file, hb_value_t *val); +void hb_plist_write_file(const char *filename, hb_value_t *val); + +#endif // _HB_PLIST_H_ + diff --git a/libhb/handbrake/ports.h b/libhb/handbrake/ports.h new file mode 100644 index 000000000..6b793da28 --- /dev/null +++ b/libhb/handbrake/ports.h @@ -0,0 +1,240 @@ +/* ports.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_PORTS_H +#define HB_PORTS_H + +#if ARCH_X86_64 || ARCH_X86_32 +#define ARCH_X86 +#endif + +#if defined(_WIN32) +#define DIR_SEP_STR "\\" +#define DIR_SEP_CHAR '\\' +#define IS_DIR_SEP(c) (c == '\\' || c == '/') +#else +#define DIR_SEP_STR "/" +#define DIR_SEP_CHAR '/' +#define IS_DIR_SEP(c) (c == '/') +#endif + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV +#include "mfx/mfxstructures.h" +#ifdef SYS_LINUX +#include <va/va_drm.h> +#endif +#endif + +/************************************************************************ + * HW accel display + ***********************************************************************/ +#ifdef SYS_LINUX +extern const char* DRM_INTEL_DRIVER_NAME; +#endif // SYS_LINUX + +typedef struct +{ + void * handle; +#if HB_PROJECT_FEATURE_QSV + mfxHandleType mfxType; + +#ifdef SYS_LINUX + int vaFd; + VADisplay vaDisplay; +#endif // SYS_LINUX +#endif +} hb_display_t; + +hb_display_t * hb_display_init(const char * driver_name, + const char * const * interface_names); +void hb_display_close(hb_display_t ** _d); + +/************************************************************************ + * CPU info utilities + ***********************************************************************/ +enum hb_cpu_platform +{ + // list of microarchitecture codenames + HB_CPU_PLATFORM_UNSPECIFIED = 0, + HB_CPU_PLATFORM_INTEL_BNL, + HB_CPU_PLATFORM_INTEL_SNB, + HB_CPU_PLATFORM_INTEL_IVB, + HB_CPU_PLATFORM_INTEL_SLM, + HB_CPU_PLATFORM_INTEL_HSW, + HB_CPU_PLATFORM_INTEL_BDW, + HB_CPU_PLATFORM_INTEL_CHT, + HB_CPU_PLATFORM_INTEL_SKL, + HB_CPU_PLATFORM_INTEL_KBL, + HB_CPU_PLATFORM_INTEL_ICL, +}; +int hb_get_cpu_count(void); +int hb_get_cpu_platform(void); +const char* hb_get_cpu_name(void); +const char* hb_get_cpu_platform_name(void); + +/************************************************************************ + * Utils + ***********************************************************************/ +// provide time in ms +uint64_t hb_get_date(void); +// provide time in us +uint64_t hb_get_time_us(void); + +void hb_snooze( int delay ); +int hb_platform_init(void); + +#ifdef SYS_MINGW +typedef struct +{ + _WDIR *wdir; + struct dirent entry; +} HB_DIR; +#else +typedef DIR HB_DIR; +#endif + +#ifdef SYS_MINGW +typedef struct _stat64 hb_stat_t; +#else +typedef struct stat hb_stat_t; +#endif + +HB_DIR* hb_opendir(const char *path); +int hb_closedir(HB_DIR *dir); +void hb_rewinddir(HB_DIR *dir); +struct dirent * hb_readdir(HB_DIR *dir); +int hb_mkdir(char * name); +int hb_stat(const char *path, hb_stat_t *sb); +FILE * hb_fopen(const char *path, const char *mode); +char * hb_strr_dir_sep(const char *path); + +/************************************************************************ + * String utils + ***********************************************************************/ +char * hb_strndup(const char * src, size_t len); + +/************************************************************************ + * File utils + ***********************************************************************/ +char * hb_get_temporary_directory(void); +char * hb_get_temporary_filename( char *fmt, ... ); +size_t hb_getline(char **lineptr, size_t *n, FILE *fp); + +#ifdef __LIBHB__ + +// Convert utf8 string to current code page. +char * hb_utf8_to_cp(const char *src); + +/* Everything from now is only used internally and hidden to the UI */ + +/************************************************************************ + * DVD utils + ***********************************************************************/ +int hb_dvd_region(char *device, int *region_mask); + +#if defined( SYS_DARWIN ) +int osx_get_user_config_directory( char path[512] ); +#endif +void hb_get_user_config_directory( char path[512] ); +void hb_get_user_config_filename( char name[1024], char *fmt, ... ); +/************************************************************************ + * Threads + ***********************************************************************/ +typedef struct hb_thread_s hb_thread_t; + +#if defined( SYS_BEOS ) +# define HB_LOW_PRIORITY 5 +# define HB_NORMAL_PRIORITY 10 +#elif defined( SYS_DARWIN ) +# define HB_LOW_PRIORITY 31 +# define HB_NORMAL_PRIORITY 31 +#elif defined( SYS_CYGWIN ) +# define HB_LOW_PRIORITY 0 +# define HB_NORMAL_PRIORITY 1 +#elif defined( SYS_MINGW ) +# define HB_LOW_PRIORITY 0 +# define HB_NORMAL_PRIORITY 0 +#endif + +#ifndef HB_LOW_PRIORITY +#define HB_LOW_PRIORITY 0 +#endif + +#ifndef HB_NORMAL_PRIORITY +#define HB_NORMAL_PRIORITY 0 +#endif + +typedef void (thread_func_t)(void *); +hb_thread_t * hb_thread_init( const char * name, thread_func_t *function, + void * arg, int priority ); +void hb_thread_close( hb_thread_t ** ); +int hb_thread_has_exited( hb_thread_t * ); + +void hb_yield(void); + +/************************************************************************ + * Mutexes + ***********************************************************************/ + +hb_lock_t * hb_lock_init(); +void hb_lock_close( hb_lock_t ** ); +void hb_lock( hb_lock_t * ); +void hb_unlock( hb_lock_t * ); + +/************************************************************************ + * Condition variables + ***********************************************************************/ +typedef struct hb_cond_s hb_cond_t; + +hb_cond_t * hb_cond_init(); +void hb_cond_wait( hb_cond_t *, hb_lock_t * ); +void hb_cond_timedwait( hb_cond_t * c, hb_lock_t * lock, int msec ); +void hb_cond_signal( hb_cond_t * ); +void hb_cond_broadcast( hb_cond_t * c ); +void hb_cond_close( hb_cond_t ** ); + +/************************************************************************ + * Network + ***********************************************************************/ +typedef struct hb_net_s hb_net_t; + +hb_net_t * hb_net_open( char * address, int port ); +int hb_net_send( hb_net_t *, char * ); +int hb_net_recv( hb_net_t *, char *, int ); +void hb_net_close( hb_net_t ** ); + +/************************************************************************ +* OS Sleep Allow / Prevent +***********************************************************************/ +void* hb_system_sleep_opaque_init(); +void hb_system_sleep_opaque_close(void **opaque); +void hb_system_sleep_private_enable(void *opaque); +void hb_system_sleep_private_disable(void *opaque); + +/************************************************************************ +* Loadable Libraries +***********************************************************************/ +void * hb_dlopen(const char *name); +void * hb_dlsym(void *h, const char *name); +int hb_dlclose(void *h); + +#if defined( SYS_MINGW ) +#define HB_SO_EXT ".dll" +#elif defined( SYS_DARWIN ) +#define HB_SO_EXT ".dylib" +#else +#define HB_SO_EXT ".so" +#endif + +#endif /* __LIBHB__ */ + +#endif + diff --git a/libhb/handbrake/preset.h b/libhb/handbrake/preset.h new file mode 100644 index 000000000..abb188487 --- /dev/null +++ b/libhb/handbrake/preset.h @@ -0,0 +1,203 @@ +/* preset.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ +#if !defined(HB_PRESET_H) +#define HB_PRESET_H + +#include "handbrake/common.h" +#include "handbrake/hb_dict.h" + +#define HB_MAX_PRESET_FOLDER_DEPTH 8 + +#define HB_PRESET_TYPE_OFFICIAL 0 +#define HB_PRESET_TYPE_CUSTOM 1 +#define HB_PRESET_TYPE_ALL 2 + +typedef struct hb_preset_index_s hb_preset_index_t; + +// A preset index is a list of indexes that specifies a path to a +// specific preset in a preset list. Since a preset list can have +// folders that contain sub-lists, multiple index values are needed +// to create a complete path. +struct hb_preset_index_s +{ + int depth; + int index[HB_MAX_PRESET_FOLDER_DEPTH]; +}; + +#ifdef __LIBHB__ +// Preset APIs reserved for libhb + +// Initialize the hb_value_array_t that holds HandBrake builtin presets +// These presets come from a json string embedded in libhb and can be +// retrieved with hb_presets_builtin_get() after initialization. +void hb_presets_builtin_init(void); + +// Free all libhb presets. This should only be called when closing +// an hb_handle_t. +void hb_presets_free(void); + +#endif // __LIBHB__ + +// Add the default CLI preset(s) to the currently loaded presets +int hb_presets_cli_default_init(void); + +// Get the currently supported preset format version +void hb_presets_current_version(int *major, int* minor, int *micro); + +// Get the format version of a preset dict +int hb_presets_version(hb_value_t *preset, int *major, int *minor, int *micro); + +// Initialize a new preset index. "index" may be NULL +hb_preset_index_t * hb_preset_index_init(const int *index, int depth); + +// Duplicate a preset index +hb_preset_index_t * hb_preset_index_dup(const hb_preset_index_t *path); + +// Append one index to another +void hb_preset_index_append(hb_preset_index_t *dst, + const hb_preset_index_t *src); + +// Load presets list from GUI presets file if it exists. This should probably +// only be used by the CLI. +int hb_presets_gui_init(void); + +// Get HandBrake builtin presets list as hb_value_array_t +hb_value_t * hb_presets_builtin_get(void); + +// Get HandBrake builtin presets list as json string +char * hb_presets_builtin_get_json(void); + +// Load default builtin presets list over the top of any builtins in the +// current preset list. This should be used by a frontend when it recognizes +// that it's preset file is from an older version of HandBrake. +void hb_presets_builtin_update(void); + +// Clean presets. Removes unknown keys and normalizes values. +// This should be applied before exporting a preset and is applied +// for you by hb_presets_write_json() and hb_preset_package_json(). +void hb_presets_clean(hb_value_t *preset); + +// Clean json presets. Removes unknown keys and normalizes values. +// This should be applied before exporting a preset and is applied +// for you by hb_presets_write_json() and hb_preset_package_json(). +char * hb_presets_clean_json(const char *json); + +// Import a preset. Sanitizes and converts old key/value pairs +// to new key/value pairs. This is applied for you by hb_presets_add(), +// hb_presets_add_json(), hb_presets_add_file(), and hb_presets_add_path() +int hb_presets_import(const hb_value_t *in, hb_value_t **out); + +// Import a json preset. Sanitizes and converts old key/value pairs +// to new key/value pairs. +int hb_presets_import_json(const char *in, char **out); + +// Register new presets with libhb from json string +int hb_presets_add_json(const char *json); + +// Read a preset file. Does not add to internal preset list. +hb_value_t * hb_presets_read_file(const char *filename); + +// Read a preset file. Does not add to internal preset list. +// Returns a json string. +char * hb_presets_read_file_json(const char *filename); + +// Register new presets with libhb from a preset dict +int hb_presets_add(hb_value_t *preset); + +// Register new presets with libhb from json file +int hb_presets_add_file(const char *filename); + +// Register new presets with libhb from json file(s) +// path can be a directory, in which case all *.json files in the +// directory will be added +int hb_presets_add_path(char * path); + +// Get list of all presets registered with libhb as hb_value_array_t +hb_value_t * hb_presets_get(void); + + +// Get list of all presets registered with libhb as json string +char * hb_presets_get_json(void); + +// Apply preset Muxer settings to a job +int hb_preset_apply_mux(const hb_dict_t *preset, hb_dict_t *job_dict); + +// Apply preset Video settings to a job +int hb_preset_apply_video(const hb_dict_t *preset, hb_dict_t *job_dict); + +// Apply preset Filter settings to a job +// +// Note that this does not apply scale filter settings. A title is +// required to set the default scale filter settings, so this filter +// is applied in hb_preset_apply_title() +int hb_preset_apply_filters(const hb_dict_t *preset, hb_dict_t *job_dict); + +// Apply preset settings that require a title to a job +int hb_preset_apply_title(hb_handle_t *h, int title_index, + const hb_dict_t *preset, hb_dict_t *job_dict); + +// Initialize a job from the given title and preset +hb_dict_t * hb_preset_job_init(hb_handle_t *h, int title_index, + const hb_dict_t *preset); + +// Reinitialize subtitles from preset defaults. +int hb_preset_job_add_subtitles(hb_handle_t *h, int title_index, + const hb_dict_t *preset, hb_dict_t *job_dict); + +// Reinitialize audio from preset defaults. +int hb_preset_job_add_audio(hb_handle_t *h, int title_index, + const hb_dict_t *preset, hb_dict_t *job_dict); +void hb_sanitize_audio_settings(const hb_title_t * title, + hb_value_t * audio_settings); + +// Lookup a preset in the preset list. The "name" may contain '/' +// separators to explicitly specify a preset within the preset lists +// folder structure. +// +// If 'recurse' is specified, a recursive search for the first component +// in the name will be performed. +// +// I assume that the actual preset name does not include any '/' +hb_preset_index_t * hb_preset_search_index(const char *name, + int recurse, int type); +hb_value_t * hb_preset_search(const char *name, int recurse, int type); +char * hb_preset_search_json(const char *name, + int recurs, int typee); + +hb_value_t * hb_presets_get_folder_children(const hb_preset_index_t *path); +hb_value_t * hb_preset_get(const hb_preset_index_t *path); +int hb_preset_delete(const hb_preset_index_t *path); +int hb_preset_set(const hb_preset_index_t *path, + const hb_value_t *dict); +int hb_preset_insert(const hb_preset_index_t *path, + const hb_value_t *dict); +int hb_preset_append(const hb_preset_index_t *path, + const hb_value_t *dict); +int hb_preset_move(const hb_preset_index_t *src_path, + const hb_preset_index_t *dst_path); + +// Recursively lookup the preset that is marked as 'Default' +hb_dict_t * hb_presets_get_default(void); +char * hb_presets_get_default_json(void); +hb_preset_index_t * hb_presets_get_default_index(void); +void hb_presets_clear_default(void); + +// Package the provided preset (wrap in dict and add version etc) +// and write to json file +int hb_presets_write_json(const hb_value_t *preset, const char *path); + +// Package the provided preset (wrap in dict and add version etc) +// and return as json string +char * hb_presets_package_json(const hb_value_t *presets); + +// Package the provided json presets list (wrap in dict and add version etc) +// and return as json string +char * hb_presets_json_package(const char *json_presets); + +#endif // HB_PRESET_H diff --git a/libhb/handbrake/preset_builtin.h b/libhb/handbrake/preset_builtin.h new file mode 100644 index 000000000..294dfb556 --- /dev/null +++ b/libhb/handbrake/preset_builtin.h @@ -0,0 +1,8883 @@ +const char hb_builtin_presets_json[] = +"{\n" +" \"PresetBuiltin\": [\n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"fast\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"Small H.264 video (up to 1080p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Very Fast 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 4000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"veryfast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"fast\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"Small H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Very Fast 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"veryfast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 23.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"fast\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"Small H.264 video (up to 576p25) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Very Fast 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1200, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"veryfast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"fast\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"Small H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Very Fast 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"veryfast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": true, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Fast 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Fast 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 576p25) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Fast 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Fast 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"HQ 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 9000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 720p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"HQ 720p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 4500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 19.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 576p25), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"HQ 576p25 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2700, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 18.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 480p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"HQ 480p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2250, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 18.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"Super high quality H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"Super HQ 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 15000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"ref=5:bframes=5\", \n" +" \"VideoPreset\": \"veryslow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 18.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"Super high quality H.264 video (up to 720p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"Super HQ 720p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 7500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"ref=5:bframes=5\", \n" +" \"VideoPreset\": \"veryslow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 17.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"Super high quality H.264 video (up to 576p25), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"Super HQ 576p25 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 4500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"ref=5:bframes=5\", \n" +" \"VideoPreset\": \"veryslow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 16.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"Super high quality H.264 video (up to 480p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.\", \n" +" \"PresetName\": \"Super HQ 480p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3750, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"ref=5:bframes=5\", \n" +" \"VideoPreset\": \"veryslow\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 16.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"General\", \n" +" \"Type\": 0\n" +" }, \n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 96, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"Encode up to 3 minutes of video in large size for Gmail (25 MB or less). H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Gmail Large 3 Minutes 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 900, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=3600:vbv-maxrate=900:aq-mode=2:aq-strength=0.8:direct=auto:analyse=all:deblock=3,2\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 23.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 96, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"Encode up to 5 minutes of video in medium size for Gmail (25 MB or less). H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container.\", \n" +" \"PresetName\": \"Gmail Medium 5 Minutes 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=2000:vbv-maxrate=500:aq-mode=2:aq-strength=0.8:direct=auto:analyse=all:deblock=3,2\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 23.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 48, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"mono\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 288, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 384, \n" +" \"PresetDescription\": \"Encode up to 10 minutes of video in small size for Gmail (25 MB or less). H.264 video (up to 288p30) and AAC mono audio, in an MP4 container.\", \n" +" \"PresetName\": \"Gmail Small 10 Minutes 288p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 250, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=1000:vbv-maxrate=250:aq-mode=2:aq-strength=0.8:direct=auto:analyse=all:deblock=3,2\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 23.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"48\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 2160p60) and high bit rate AAC stereo audio in an MP4 container. Compatible with video hosting services supporting 4K video, such as Vimeo and YouTube.\", \n" +" \"PresetName\": \"Vimeo YouTube HQ 2160p60 4K\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 18000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"5.2\", \n" +" \"VideoOptionExtra\": \"keyint=30:min-keyint=15:ref=1:bframes=2:b-pyramid=none\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"48\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1440, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 2560, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 1440p60) and high bit rate AAC stereo audio in an MP4 container. Compatible with video hosting services supporting 2.5K video, such as Vimeo and YouTube.\", \n" +" \"PresetName\": \"Vimeo YouTube HQ 1440p60 2.5K\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 12000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"5.2\", \n" +" \"VideoOptionExtra\": \"keyint=30:min-keyint=15:ref=1:bframes=2:b-pyramid=none\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"48\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 1080p60) and high bit rate AAC stereo audio in an MP4 container. Compatible with video hosting services supporting 1080p60, such as Vimeo and YouTube.\", \n" +" \"PresetName\": \"Vimeo YouTube HQ 1080p60\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 9000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.2\", \n" +" \"VideoOptionExtra\": \"keyint=30:min-keyint=15:ref=1:bframes=2:b-pyramid=none\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"48\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"High quality H.264 video (up to 720p60) and high bit rate AAC stereo audio in an MP4 container. Compatible with video hosting services supporting 720p60, such as Vimeo and YouTube.\", \n" +" \"PresetName\": \"Vimeo YouTube HQ 720p60\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 4500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.2\", \n" +" \"VideoOptionExtra\": \"keyint=30:min-keyint=15:ref=1:bframes=2:b-pyramid=none\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 19.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"48\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and high bit rate AAC stereo audio in an MP4 container. Compatible with most video hosting services, such as Vimeo and YouTube.\", \n" +" \"PresetName\": \"Vimeo YouTube 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.2\", \n" +" \"VideoOptionExtra\": \"keyint=30:min-keyint=15:ref=1:bframes=2:b-pyramid=none\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"Web\", \n" +" \"Type\": 0\n" +" }, \n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30) and AAC stereo audio, in an MP4 container. Compatible with Android devices.\", \n" +" \"PresetName\": \"Android 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container. Compatible with Android devices.\", \n" +" \"PresetName\": \"Android 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 128, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 576p25) and AAC stereo audio, in an MP4 container. Compatible with Android devices.\", \n" +" \"PresetName\": \"Android 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 128, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container. Compatible with Android devices.\", \n" +" \"PresetName\": \"Android 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.265 video (up to 2160p60), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Apple iPhone 7, 7 Plus, 8, 8 Plus, X, XR, XS, XS Max; Apple TV 4K.\", \n" +" \"PresetName\": \"Apple 2160p60 4K HEVC Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p60), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Apple iPad 5th and 6th Generation; iPad mini 2, 3, and 4; iPad Air 1st Generation and Air 2; iPad Pro 1st, 2nd, and 3rd Generation; Apple TV 4th Generation and later.\", \n" +" \"PresetName\": \"Apple 1080p60 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.2\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Apple iPhone 5, 5s, SE, 6, 6 Plus, 6s, 6s Plus, and later; iPod touch 6th Generation; iPad 3rd, 4th Generation and later; iPad mini 1st Generation and later; Apple TV 3rd, 4th Generation and later.\", \n" +" \"PresetName\": \"Apple 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Apple iPhone 4, 4S, and later; iPod touch 4th, 5th Generation and later; iPad 1st Generation, iPad 2, and later; Apple TV 2nd Generation and later.\", \n" +" \"PresetName\": \"Apple 720p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 540, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 960, \n" +" \"PresetDescription\": \"H.264 video (up to 540p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Apple iPhone 1st Generation, 3G, 3GS, and later; iPod touch 1st, 2nd, 3rd Generation and later; iPod Classic; Apple TV 1st Generation and later.\", \n" +" \"PresetName\": \"Apple 540p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"qpmin=4:cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": true, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 240, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 16, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 320, \n" +" \"PresetDescription\": \"H.264 video (up to 240p30) and AAC stereo audio, in an MP4 container. Compatible with Apple iPod 5th Generation and later.\", \n" +" \"PresetName\": \"Apple 240p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 350, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"1.3\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"baseline\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": true, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.265 video (up to 2160p60), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Google Chromecast Ultra.\", \n" +" \"PresetName\": \"Chromecast 2160p60 4K HEVC Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p60), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Google Chromecast 3rd Generation.\", \n" +" \"PresetName\": \"Chromecast 1080p60 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.2\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": true, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Google Chromecast 1st, 2nd Generation and later.\", \n" +" \"PresetName\": \"Chromecast 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.265 video (up to 2160p60), AAC stereo audio, and Dolby Digital (AC-3) audio, in an MP4 container. Compatible with Amazon Fire TV 2nd Generation and later; Fire TV Cube, Fire TV Stick 4K.\", \n" +" \"PresetName\": \"Amazon Fire 2160p60 4K HEVC Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) audio, in an MP4 container. Compatible with Amazon Fire TV 1st Generation and later; Fire TV Stick 1st Generation and later; Fire HD 10 7th Generation (2017); Fire HDX 4th Generation (2014).\", \n" +" \"PresetName\": \"Amazon Fire 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container. Compatible with Amazon Fire HD 4th Generation (2014) and later; Kindle Fire HDX 3rd Generation (2013); Kindle Fire HD 2nd Generation (2012) and later.\", \n" +" \"PresetName\": \"Amazon Fire 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.264 video (up to 2160p60), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Playstation 4 Pro.\", \n" +" \"PresetName\": \"Playstation 2160p60 4K Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 12000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"5.2\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Playstation 3 and 4.\", \n" +" \"PresetName\": \"Playstation 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container. Compatible with Playstation Vita TV.\", \n" +" \"PresetName\": \"Playstation 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 540, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 960, \n" +" \"PresetDescription\": \"H.264 video (up to 540p30) and AAC stereo audio, in an MP4 container. Compatible with Playstation Vita.\", \n" +" \"PresetName\": \"Playstation 540p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2250, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\", \n" +" \"copy:dts\", \n" +" \"copy:eac3\", \n" +" \"copy:mp3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.265 video (up to 2160p60), AAC stereo audio, and surround audio, in an MKV container. Compatible with Roku 4, Streaming Stick+, Premiere+, and Ultra.\", \n" +" \"PresetName\": \"Roku 2160p60 4K HEVC Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Roku 1080p models.\", \n" +" \"PresetName\": \"Roku 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Roku 720p models.\", \n" +" \"PresetName\": \"Roku 720p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 576p25) and AAC stereo audio, in an MP4 container. Compatible with Roku standard definition models.\", \n" +" \"PresetName\": \"Roku 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": true, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container. Compatible with Roku standard definition models.\", \n" +" \"PresetName\": \"Roku 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30) and AAC stereo audio, in an MP4 container. Compatible with Windows Mobile devices with Qualcomm Snapdragon 800 (MSM8974), S4 (MSM8x30, MSM8960), and better CPUs.\", \n" +" \"PresetName\": \"Windows Mobile 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MP4 container. Compatible with Windows Mobile devices with Qualcomm Snapdragon S4 (MSM8x27), S2 (MSM8x55), S1 (MSM8x50), and better CPUs.\", \n" +" \"PresetName\": \"Windows Mobile 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=10000:vbv-maxrate=10000\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 540, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 960, \n" +" \"PresetDescription\": \"H.264 video (up to 540p30) and AAC stereo audio, in an MP4 container. Compatible with Windows Mobile devices with Qualcomm Snapdragon 200 (MSM8210, MSM8212) and better CPUs.\", \n" +" \"PresetName\": \"Windows Mobile 540p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1750, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=4000:vbv-maxrate=4000\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 480p30) and AAC stereo audio, in an MP4 container. Compatible with Windows Mobile devices with Qualcomm Snapdragon S1 (MSM7x27a) and better CPUs.\", \n" +" \"PresetName\": \"Windows Mobile 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1250, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"vbv-bufsize=2000:vbv-maxrate=2000\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Xbox One.\", \n" +" \"PresetName\": \"Xbox 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }, \n" +" {\n" +" \"AudioBitrate\": 640, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"none\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": false, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 8, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container. Compatible with Xbox 360.\", \n" +" \"PresetName\": \"Xbox Legacy 1080p30 Surround\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"Devices\", \n" +" \"Type\": 0\n" +" }, \n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.265 video (up to 2160p60) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.265 MKV 2160p60\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.265 video (up to 1080p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.265 MKV 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.265 video (up to 720p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.265 MKV 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.265 video (up to 576p25) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.265 MKV 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1200, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.265 video (up to 480p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.265 MKV 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x265\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"strong-intra-smoothing=0:rect=0\", \n" +" \"VideoPreset\": \"slow\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"H.264 video (up to 2160p60) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.264 MKV 2160p60\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 12000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"5.2\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"H.264 video (up to 1080p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.264 MKV 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"4.0\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"H.264 video (up to 720p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.264 MKV 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 576p25) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.264 MKV 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"H.264 video (up to 480p30) and AAC stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"H.264 MKV 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"3.1\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"main\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"opus\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"opus\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 2160, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 3840, \n" +" \"PresetDescription\": \"VP9 video (up to 2160p60) and Opus stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP9 MKV 2160p60\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 8000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp9\", \n" +" \"VideoFramerate\": \"60\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=30\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 24.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"opus\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"opus\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"VP9 video (up to 1080p30) and Opus stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP9 MKV 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 4500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp9\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=30\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"opus\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"opus\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"VP9 video (up to 720p30) and Opus stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP9 MKV 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 2500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp9\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=30\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 21.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"opus\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"opus\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"VP9 video (up to 576p25) and Opus stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP9 MKV 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp9\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=30\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"opus\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"opus\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"VP9 video (up to 480p30) and Opus stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP9 MKV 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1250, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp9\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=30\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"vorbis\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"vorbis\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"VP8 video (up to 1080p30) and Vorbis stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP8 MKV 1080p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp8\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=24\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 4.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"vorbis\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"vorbis\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 720, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1280, \n" +" \"PresetDescription\": \"VP8 video (up to 720p30) and Vorbis stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP8 MKV 720p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 3000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp8\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=24\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 4.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"vorbis\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"vorbis\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 576, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"VP8 video (up to 576p25) and Vorbis stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP8 MKV 576p25\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp8\", \n" +" \"VideoFramerate\": \"25\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=24\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 4.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [], \n" +" \"AudioEncoderFallback\": \"vorbis\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 160, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"vorbis\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mkv\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"default\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"decomb\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 480, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"auto\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 720, \n" +" \"PresetDescription\": \"VP8 video (up to 480p30) and Vorbis stereo audio, in an MKV container.\", \n" +" \"PresetName\": \"VP8 MKV 480p30\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": true, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 1500, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"vp8\", \n" +" \"VideoFramerate\": \"30\", \n" +" \"VideoFramerateMode\": \"pfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"qmin=0:qmax=24\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 4.0, \n" +" \"VideoQualityType\": 1, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"Matroska\", \n" +" \"Type\": 0\n" +" }, \n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"none\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": false, \n" +" \"AudioTrackSelectionBehavior\": \"all\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": false, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 0, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 0, \n" +" \"PresetDescription\": \"Maximum bit rate, constant frame rate H.264 video and high bit rate AAC stereo audio in an MP4 container. For professional use as an intermediate format for video editing. Creates gigantic files.\", \n" +" \"PresetName\": \"Production Max\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 120000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"cfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"keyint=12:min-keyint=1:ref=1:bframes=0:qcomp=0.8:aq-strength=0.5:dct-decimate=0:fast-pskip=0:deblock=-2,-2\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 2.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"none\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": false, \n" +" \"AudioTrackSelectionBehavior\": \"all\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": false, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 0, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 0, \n" +" \"PresetDescription\": \"High bit rate, constant frame rate H.264 video and high bit rate AAC stereo audio in an MP4 container. For professional use as an intermediate format for video editing. Creates very large files.\", \n" +" \"PresetName\": \"Production Standard\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 60000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"cfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"keyint=12:min-keyint=1:ref=1:bframes=0:qcomp=0.8:aq-strength=0.5:dct-decimate=0:fast-pskip=0:deblock=-2,-2\", \n" +" \"VideoPreset\": \"fast\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 10.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"none\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": false, \n" +" \"AudioTrackSelectionBehavior\": \"all\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": false, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 1080, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 1920, \n" +" \"PresetDescription\": \"Intra-only, constant frame rate H.264 video (up to 1080p) and high bit rate AAC stereo audio in an MP4 container. For professional use as a low resolution proxy format for video editing.\", \n" +" \"PresetName\": \"Production Proxy 1080p\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 30000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"cfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"keyint=1:min-keyint=1:ref=1:bframes=0:qcomp=0.8:aq-strength=0.5\", \n" +" \"VideoPreset\": \"superfast\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 18.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"none\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 320, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"stereo\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": false, \n" +" \"AudioTrackSelectionBehavior\": \"all\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": false, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"light\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 540, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"off\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 960, \n" +" \"PresetDescription\": \"Intra-only, constant frame rate H.264 video (up to 540p) and high bit rate AAC stereo audio in an MP4 container. For professional use as a low resolution proxy format for video editing.\", \n" +" \"PresetName\": \"Production Proxy 540p\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": true, \n" +" \"SubtitleBurnBehavior\": \"foreign\", \n" +" \"SubtitleBurnDVDSub\": true, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 1, \n" +" \"VideoAvgBitrate\": 15000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"cfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"keyint=1:min-keyint=1:ref=1:bframes=0:qcomp=0.8:aq-strength=0.5\", \n" +" \"VideoPreset\": \"superfast\", \n" +" \"VideoProfile\": \"high\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 16.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": true, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"Production\", \n" +" \"Type\": 0\n" +" }\n" +" ], \n" +" \"PresetCLIDefault\": [\n" +" {\n" +" \"ChildrenArray\": [\n" +" {\n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\", \n" +" \"copy:eac3\", \n" +" \"copy:dtshd\", \n" +" \"copy:dts\", \n" +" \"copy:mp3\", \n" +" \"copy:truehd\", \n" +" \"copy:flac\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"aac\", \n" +" \"AudioLanguageList\": [], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 128, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"aac\", \n" +" \"AudioMixdown\": \"dpl2\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": true, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"medium\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 0, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"loose\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 0, \n" +" \"PresetDescription\": \"\", \n" +" \"PresetName\": \"CLI Default\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": false, \n" +" \"SubtitleBurnBehavior\": \"none\", \n" +" \"SubtitleBurnDVDSub\": false, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 0, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 0, \n" +" \"VideoAvgBitrate\": 6000, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"vfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 22.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": false, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }\n" +" ], \n" +" \"Folder\": true, \n" +" \"PresetName\": \"CLI Defaults\", \n" +" \"Type\": 0\n" +" }\n" +" ], \n" +" \"PresetTemplate\": {\n" +" \"Preset\": {\n" +" \"AlignAVStart\": false, \n" +" \"AudioCopyMask\": [\n" +" \"copy:aac\", \n" +" \"copy:ac3\", \n" +" \"copy:dts\", \n" +" \"copy:dtshd\", \n" +" \"copy:eac3\", \n" +" \"copy:flac\", \n" +" \"copy:mp3\", \n" +" \"copy:truehd\"\n" +" ], \n" +" \"AudioEncoderFallback\": \"ac3\", \n" +" \"AudioLanguageList\": [\n" +" \"und\"\n" +" ], \n" +" \"AudioList\": [\n" +" {\n" +" \"AudioBitrate\": 192, \n" +" \"AudioCompressionLevel\": -1.0, \n" +" \"AudioDitherMethod\": \"auto\", \n" +" \"AudioEncoder\": \"copy:ac3\", \n" +" \"AudioMixdown\": \"dpl2\", \n" +" \"AudioNormalizeMixLevel\": false, \n" +" \"AudioSamplerate\": \"auto\", \n" +" \"AudioTrackDRCSlider\": 0.0, \n" +" \"AudioTrackGainSlider\": 0.0, \n" +" \"AudioTrackQuality\": -1.0, \n" +" \"AudioTrackQualityEnable\": false\n" +" }\n" +" ], \n" +" \"AudioSecondaryEncoderMode\": true, \n" +" \"AudioTrackSelectionBehavior\": \"first\", \n" +" \"ChapterMarkers\": true, \n" +" \"ChildrenArray\": [], \n" +" \"Default\": false, \n" +" \"FileFormat\": \"mp4\", \n" +" \"Folder\": false, \n" +" \"FolderOpen\": false, \n" +" \"InlineParameterSets\": false, \n" +" \"Mp4HttpOptimize\": false, \n" +" \"Mp4iPodCompatible\": false, \n" +" \"PictureAutoCrop\": true, \n" +" \"PictureBottomCrop\": 0, \n" +" \"PictureChromaSmoothCustom\": \"\", \n" +" \"PictureChromaSmoothPreset\": \"off\", \n" +" \"PictureChromaSmoothTune\": \"none\", \n" +" \"PictureCombDetectCustom\": \"\", \n" +" \"PictureCombDetectPreset\": \"off\", \n" +" \"PictureDARWidth\": 0, \n" +" \"PictureDeblockCustom\": \"strength=strong:thresh=20:blocksize=8\", \n" +" \"PictureDeblockPreset\": \"off\", \n" +" \"PictureDeblockTune\": \"medium\", \n" +" \"PictureDeinterlaceCustom\": \"\", \n" +" \"PictureDeinterlaceFilter\": \"off\", \n" +" \"PictureDeinterlacePreset\": \"default\", \n" +" \"PictureDenoiseCustom\": \"\", \n" +" \"PictureDenoiseFilter\": \"off\", \n" +" \"PictureDenoisePreset\": \"medium\", \n" +" \"PictureDenoiseTune\": \"none\", \n" +" \"PictureDetelecine\": \"off\", \n" +" \"PictureDetelecineCustom\": \"\", \n" +" \"PictureForceHeight\": 0, \n" +" \"PictureForceWidth\": 0, \n" +" \"PictureHeight\": 0, \n" +" \"PictureItuPAR\": false, \n" +" \"PictureKeepRatio\": true, \n" +" \"PictureLeftCrop\": 0, \n" +" \"PictureLooseCrop\": false, \n" +" \"PictureModulus\": 2, \n" +" \"PicturePAR\": \"loose\", \n" +" \"PicturePARHeight\": 720, \n" +" \"PicturePARWidth\": 853, \n" +" \"PictureRightCrop\": 0, \n" +" \"PictureRotate\": \"angle=0:hflip=0\", \n" +" \"PictureSharpenCustom\": \"\", \n" +" \"PictureSharpenFilter\": \"off\", \n" +" \"PictureSharpenPreset\": \"medium\", \n" +" \"PictureSharpenTune\": \"none\", \n" +" \"PictureTopCrop\": 0, \n" +" \"PictureWidth\": 0, \n" +" \"PresetDescription\": \"\", \n" +" \"PresetName\": \"Name Missing\", \n" +" \"SubtitleAddCC\": false, \n" +" \"SubtitleAddForeignAudioSearch\": false, \n" +" \"SubtitleAddForeignAudioSubtitle\": false, \n" +" \"SubtitleBurnBDSub\": false, \n" +" \"SubtitleBurnBehavior\": \"none\", \n" +" \"SubtitleBurnDVDSub\": false, \n" +" \"SubtitleLanguageList\": [], \n" +" \"SubtitleTrackSelectionBehavior\": \"none\", \n" +" \"Type\": 1, \n" +" \"UsesPictureFilters\": true, \n" +" \"UsesPictureSettings\": 2, \n" +" \"VideoAvgBitrate\": 1800, \n" +" \"VideoColorMatrixCodeOverride\": 0, \n" +" \"VideoEncoder\": \"x264\", \n" +" \"VideoFramerate\": \"auto\", \n" +" \"VideoFramerateMode\": \"vfr\", \n" +" \"VideoGrayScale\": false, \n" +" \"VideoLevel\": \"auto\", \n" +" \"VideoOptionExtra\": \"\", \n" +" \"VideoPreset\": \"medium\", \n" +" \"VideoProfile\": \"auto\", \n" +" \"VideoQSVAsyncDepth\": 4, \n" +" \"VideoQSVDecode\": false, \n" +" \"VideoQualitySlider\": 20.0, \n" +" \"VideoQualityType\": 2, \n" +" \"VideoScaler\": \"swscale\", \n" +" \"VideoTune\": \"\", \n" +" \"VideoTurboTwoPass\": false, \n" +" \"VideoTwoPass\": false, \n" +" \"x264Option\": \"\", \n" +" \"x264UseAdvancedOptions\": false\n" +" }, \n" +" \"VersionMajor\": 37, \n" +" \"VersionMicro\": 0, \n" +" \"VersionMinor\": 0\n" +" }\n" +"}\n"; diff --git a/libhb/handbrake/project.h.m4 b/libhb/handbrake/project.h.m4 new file mode 100644 index 000000000..93af47419 --- /dev/null +++ b/libhb/handbrake/project.h.m4 @@ -0,0 +1,58 @@ +changequote(<<, >>)dnl +include(<<handbrake.m4>>)dnl +dnl +dnl +dnl +#ifndef HB_PROJECT_H +#define HB_PROJECT_H + +<<#>>define HB_PROJECT_TITLE "__HB_title" +<<#>>define HB_PROJECT_NAME "__HB_name" +<<#>>define HB_PROJECT_NAME_LOWER "__HB_name_lower" +<<#>>define HB_PROJECT_NAME_UPPER "__HB_name_upper" +<<#>>define HB_PROJECT_URL_WEBSITE "__HB_url_website" +<<#>>define HB_PROJECT_URL_COMMUNITY "__HB_url_community" +<<#>>define HB_PROJECT_URL_IRC "__HB_url_irc" +<<#>>define HB_PROJECT_URL_APPCAST "__HB_url_appcast" +<<#>>define HB_PROJECT_VERSION_MAJOR __HB_version_major +<<#>>define HB_PROJECT_VERSION_MINOR __HB_version_minor +<<#>>define HB_PROJECT_VERSION_POINT __HB_version_point +<<#>>define HB_PROJECT_VERSION "__HB_version" +<<#>>define HB_PROJECT_VERSION_HEX 0x<<>>__HB_version_hex<<>>LL +<<#>>define HB_PROJECT_BUILD __HB_build +<<#>>define HB_PROJECT_REPO_URL "__HB_repo_url" +<<#>>define HB_PROJECT_REPO_TAG "__HB_repo_tag" +<<#>>define HB_PROJECT_REPO_REV __HB_repo_rev +<<#>>define HB_PROJECT_REPO_HASH "__HB_repo_hash" +<<#>>define HB_PROJECT_REPO_BRANCH "__HB_repo_branch" +<<#>>define HB_PROJECT_REPO_REMOTE "__HB_repo_remote" +<<#>>define HB_PROJECT_REPO_TYPE "__HB_repo_type" +<<#>>define HB_PROJECT_REPO_OFFICIAL __HB_repo_official +<<#>>define HB_PROJECT_REPO_DATE "__HB_repo_date" + +<<#>>define HB_PROJECT_HOST_SPEC "__HOST_spec" +<<#>>define HB_PROJECT_HOST_MACHINE "__HOST_machine" +<<#>>define HB_PROJECT_HOST_VENDOR "__HOST_vendor" +<<#>>define HB_PROJECT_HOST_SYSTEM "__HOST_system" +<<#>>define HB_PROJECT_HOST_SYSTEMF "__HOST_systemf" +<<#>>define HB_PROJECT_HOST_RELEASE "__HOST_release" +<<#>>define HB_PROJECT_HOST_TITLE "__HOST_title" +<<#>>define HB_PROJECT_HOST_ARCH "__HOST_arch" + +<<#>>define HB_PROJECT_FEATURE_ASM __FEATURE_asm +<<#>>define HB_PROJECT_FEATURE_FDK_AAC __FEATURE_fdk_aac +<<#>>define HB_PROJECT_FEATURE_FFMPEG_AAC __FEATURE_ffmpeg_aac +<<#>>define HB_PROJECT_FEATURE_FLATPAK __FEATURE_flatpak +<<#>>define HB_PROJECT_FEATURE_GTK __FEATURE_gtk +<<#>>define HB_PROJECT_FEATURE_GTK_MINGW __FEATURE_gtk_mingw +<<#>>define HB_PROJECT_FEATURE_GTK_UPDATE_CHECKS __FEATURE_gtk_update_checks +<<#>>define HB_PROJECT_FEATURE_GST __FEATURE_gst +<<#>>define HB_PROJECT_FEATURE_NVENC __FEATURE_nvenc +<<#>>define HB_PROJECT_FEATURE_QSV __FEATURE_qsv +<<#>>define HB_PROJECT_FEATURE_VCE __FEATURE_vce +<<#>>define HB_PROJECT_FEATURE_X265 __FEATURE_x265 +<<#>>define HB_PROJECT_FEATURE_NUMA __FEATURE_numa + +<<#>>define HB_PROJECT_SECURITY_HARDEN __SECURITY_harden + +#endif /* HB_PROJECT_PROJECT_H */ diff --git a/libhb/handbrake/qsv_common.h b/libhb/handbrake/qsv_common.h new file mode 100644 index 000000000..ca844c5e9 --- /dev/null +++ b/libhb/handbrake/qsv_common.h @@ -0,0 +1,250 @@ +/* qsv_common.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code. + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_QSV_COMMON_H +#define HB_QSV_COMMON_H + +int hb_qsv_available(); + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV + +#include "mfx/mfxvideo.h" +#include "mfx/mfxplugin.h" +#include "libavcodec/avcodec.h" +#include "handbrake/hb_dict.h" + +/* Minimum Intel Media SDK version (currently 1.3, for Sandy Bridge support) */ +#define HB_QSV_MINVERSION_MAJOR HB_QSV_MSDK_VERSION_MAJOR +#define HB_QSV_MINVERSION_MINOR HB_QSV_MSDK_VERSION_MINOR + +/* + * Get & store all available Intel Quick Sync information: + * + * - general availability + * - available implementations (hardware-accelerated, software fallback, etc.) + * - available codecs, filters, etc. for direct access (convenience) + * - supported API version + * - supported resolutions + */ +typedef struct hb_qsv_info_s +{ + // each info struct only corresponds to one CodecId and implementation combo + const mfxU32 codec_id; + mfxIMPL implementation; + + // whether the encoder is available for this implementation + int available; + + // version-specific or hardware-specific capabilities + uint64_t capabilities; + // support for API 1.6 or later +#define HB_QSV_CAP_MSDK_API_1_6 (1LL << 0) + // H.264, H.265: B-frames can be used as references +#define HB_QSV_CAP_B_REF_PYRAMID (1LL << 1) +#define HB_QSV_CAP_LOWPOWER_ENCODE (1LL << 2) + // mfxExtVideoSignalInfo +#define HB_QSV_CAP_VUI_VSINFO (1LL << 3) + // optional rate control methods +#define HB_QSV_CAP_RATECONTROL_LA (1LL << 10) +#define HB_QSV_CAP_RATECONTROL_LAi (1LL << 11) +#define HB_QSV_CAP_RATECONTROL_ICQ (1LL << 12) + // mfxExtCodingOption +#define HB_QSV_CAP_OPTION1 (1LL << 20) + // mfxExtCodingOption2 +#define HB_QSV_CAP_OPTION2 (1LL << 30) +#define HB_QSV_CAP_OPTION2_MBBRC (1LL << 31) +#define HB_QSV_CAP_OPTION2_EXTBRC (1LL << 32) +#define HB_QSV_CAP_OPTION2_TRELLIS (1LL << 33) +#define HB_QSV_CAP_OPTION2_BREFTYPE (1LL << 34) +#define HB_QSV_CAP_OPTION2_IB_ADAPT (1LL << 35) +#define HB_QSV_CAP_OPTION2_LA_DOWNS (1LL << 36) +#define HB_QSV_CAP_OPTION2_NMPSLICE (1LL << 37) + + // TODO: add maximum encode resolution, etc. +} hb_qsv_info_t; + +/* Intel Quick Sync Video utilities */ +hb_display_t * hb_qsv_display_init(void); +int hb_qsv_video_encoder_is_enabled(int encoder); +int hb_qsv_audio_encoder_is_enabled(int encoder); +int hb_qsv_info_init(); +void hb_qsv_info_print(); +hb_qsv_info_t* hb_qsv_info_get(int encoder); + +/* Automatically load and unload any required MFX plug-ins */ +hb_list_t* hb_qsv_load_plugins (hb_qsv_info_t *info, mfxSession session, mfxVersion version); +void hb_qsv_unload_plugins(hb_list_t **_l, mfxSession session, mfxVersion version); + +/* Intel Quick Sync Video DECODE utilities */ +const char* hb_qsv_decode_get_codec_name(enum AVCodecID codec_id); +int hb_qsv_decode_is_enabled(hb_job_t *job); + +/* + * mfxCoreInterface::CopyFrame had a bug preventing us from using it, but + * it was fixed in newer drivers - we can use this to determine usability + */ +int hb_qsv_copyframe_is_slow(int encoder); + +/* Media SDK parameters handling */ +enum +{ + HB_QSV_PARAM_OK, + HB_QSV_PARAM_ERROR, + HB_QSV_PARAM_BAD_NAME, + HB_QSV_PARAM_BAD_VALUE, + HB_QSV_PARAM_UNSUPPORTED, +}; + +typedef struct +{ + /* + * Supported mfxExtBuffer.BufferId values: + * + * MFX_EXTBUFF_AVC_REFLIST_CTRL + * MFX_EXTBUFF_AVC_TEMPORAL_LAYERS + * MFX_EXTBUFF_CODING_OPTION + * MFX_EXTBUFF_CODING_OPTION_SPSPPS + * MFX_EXTBUFF_CODING_OPTION2 + * MFX_EXTBUFF_ENCODER_CAPABILITY + * MFX_EXTBUFF_ENCODER_RESET_OPTION + * MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION + * MFX_EXTBUFF_PICTURE_TIMING_SEI + * MFX_EXTBUFF_VIDEO_SIGNAL_INFO + * + * This should cover all encode-compatible extended + * buffers that can be attached to an mfxVideoParam. + */ +#define HB_QSV_ENC_NUM_EXT_PARAM_MAX 10 + mfxExtBuffer* ExtParamArray[HB_QSV_ENC_NUM_EXT_PARAM_MAX]; + mfxExtCodingOption codingOption; + mfxExtCodingOption2 codingOption2; + mfxExtVideoSignalInfo videoSignalInfo; + struct + { + int b_pyramid; + int gop_pic_size; + int gop_ref_dist; + int int_ref_cycle_size; + } gop; + struct + { + int icq; + int lookahead; + int cqp_offsets[3]; + int vbv_max_bitrate; + int vbv_buffer_size; + float vbv_buffer_init; + } rc; + + // assigned via hb_qsv_param_default, may be shared with another structure + mfxVideoParam *videoParam; +} hb_qsv_param_t; + +static const char* const hb_qsv_preset_names1[] = { "speed", "balanced", NULL, }; +static const char* const hb_qsv_preset_names2[] = { "speed", "balanced", "quality", NULL, }; +const char* const* hb_qsv_preset_get_names(); +const char* const* hb_qsv_profile_get_names(int encoder); +const char* const* hb_qsv_level_get_names(int encoder); + +const char* hb_qsv_video_quality_get_name(uint32_t codec); +void hb_qsv_video_quality_get_limits(uint32_t codec, float *low, float *high, float *granularity, int *direction); + +#define HB_QSV_CLIP3(min, max, val) ((val < min) ? min : (val > max) ? max : val) +int hb_qsv_codingoption_xlat (int val); +const char* hb_qsv_codingoption_get_name(int val); + +int hb_qsv_trellisvalue_xlat(int val); +int hb_qsv_atoindex(const char* const *arr, const char *str, int *err); +int hb_qsv_atobool (const char *str, int *err); +int hb_qsv_atoi (const char *str, int *err); +float hb_qsv_atof (const char *str, int *err); + +int hb_qsv_param_default_preset(hb_qsv_param_t *param, mfxVideoParam *videoParam, hb_qsv_info_t *info, const char *preset); +int hb_qsv_param_default (hb_qsv_param_t *param, mfxVideoParam *videoParam, hb_qsv_info_t *info); +int hb_qsv_param_parse (hb_qsv_param_t *param, hb_qsv_info_t *info, const char *key, const char *value); +int hb_qsv_profile_parse (hb_qsv_param_t *param, hb_qsv_info_t *info, const char *profile_key, const int codec); +int hb_qsv_level_parse (hb_qsv_param_t *param, hb_qsv_info_t *info, const char *level_key); + +typedef struct +{ + const char *name; + const char *key; + const int value; +} +hb_triplet_t; + +hb_triplet_t* hb_triplet4value(hb_triplet_t *triplets, const int value); +hb_triplet_t* hb_triplet4name (hb_triplet_t *triplets, const char *name); +hb_triplet_t* hb_triplet4key (hb_triplet_t *triplets, const char *key); + +const char* hb_qsv_codec_name (uint32_t codec_id); +const char* hb_qsv_profile_name (uint32_t codec_id, uint16_t profile_id); +const char* hb_qsv_level_name (uint32_t codec_id, uint16_t level_id); +const char* hb_qsv_frametype_name(uint16_t qsv_frametype); +uint8_t hb_qsv_frametype_xlat(uint16_t qsv_frametype, uint16_t *out_flags); + +int hb_qsv_impl_set_preferred(const char *name); +const char* hb_qsv_impl_get_name(int impl); +const char* hb_qsv_impl_get_via_name(int impl); + +void hb_qsv_force_workarounds(); // for developers only + +typedef struct QSVMid { + AVBufferRef *hw_frames_ref; + mfxHDL handle; + + AVFrame *locked_frame; + AVFrame *hw_frame; + mfxFrameSurface1 surf; +} QSVMid; + +typedef struct QSVFrame { + AVFrame *frame; + mfxFrameSurface1 surface; + mfxEncodeCtrl enc_ctrl; + mfxExtDecodedFrameInfo dec_info; + mfxExtBuffer *ext_param; + + int queued; + int used; + + struct QSVFrame *next; +} QSVFrame; + +#define HB_POOL_SURFACE_SIZE (200) + +typedef struct EncQSVFramesContext { + AVBufferRef *hw_frames_ctx; + //void *logctx; + + /* The memory ids for the external frames. + * Refcounted, since we need one reference owned by the QSVFramesContext + * (i.e. by the encoder/decoder) and another one given to the MFX session + * from the frame allocator. */ + AVBufferRef *mids_buf; + QSVMid *mids; + int nb_mids; + int pool[HB_POOL_SURFACE_SIZE]; +} EncQSVFramesContext; + +/* Full QSV pipeline helpers */ +int hb_qsv_full_path_is_enabled(hb_job_t *job); +AVBufferRef *hb_qsv_create_mids(AVBufferRef *hw_frames_ref); +hb_buffer_t* hb_qsv_copy_frame(AVFrame *frame, hb_qsv_context *qsv_ctx); +void hb_qsv_get_free_surface_from_pool(QSVMid **out_mid, mfxFrameSurface1 **out_surface, int pool_size); +int hb_qsv_get_buffer(AVCodecContext *s, AVFrame *frame, int flags); +enum AVPixelFormat hb_qsv_get_format(AVCodecContext *s, const enum AVPixelFormat *pix_fmts); +int hb_qsv_preset_is_zero_copy_enabled(const hb_dict_t *job_dict); +void hb_qsv_uninit_dec(AVCodecContext *s); +void hb_qsv_uninit_enc(); + +#endif // HB_PROJECT_FEATURE_QSV +#endif // HB_QSV_COMMON_H diff --git a/libhb/handbrake/qsv_filter.h b/libhb/handbrake/qsv_filter.h new file mode 100644 index 000000000..6d2650059 --- /dev/null +++ b/libhb/handbrake/qsv_filter.h @@ -0,0 +1,38 @@ +/* ********************************************************************* *\ + +Copyright (C) 2013 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +- Neither the name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +\* ********************************************************************* */ + +#ifndef QSV_FILTER_H +#define QSV_FILTER_H + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV +void qsv_filter_close( hb_qsv_context* qsv, HB_QSV_STAGE_TYPE vpp_type ); +#endif + +#endif // QSV_FILTER_H diff --git a/libhb/handbrake/qsv_filter_pp.h b/libhb/handbrake/qsv_filter_pp.h new file mode 100644 index 000000000..c0e7f605e --- /dev/null +++ b/libhb/handbrake/qsv_filter_pp.h @@ -0,0 +1,117 @@ +/* ********************************************************************* *\ + +Copyright (C) 2013 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +- Neither the name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +\* ********************************************************************* */ + +#ifndef QSV_FILTER_PP_H +#define QSV_FILTER_PP_H + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV + +#include "mfx/mfxplugin.h" + +struct qsv_filter_task_s; + +typedef struct{ + mfxFrameAllocator *alloc; + mfxStatus (*process)(struct qsv_filter_task_s*,void*); + mfxCoreInterface *core; +}qsv_filter_processor_t; + +typedef struct qsv_filter_task_s{ + mfxFrameSurface1 *in; + mfxFrameSurface1 *out; + int busy; + hb_filter_private_t *pv; + qsv_filter_processor_t processor; +} qsv_filter_task_t; + +typedef struct qsv_filter_private_s{ + + int is_init_done; + + mfxCoreInterface *core; + mfxVideoParam *videoparam; + mfxPluginParam pluginparam; + + hb_filter_private_t *pv; + + mfxPlugin plug; + hb_list_t *tasks; +} qsv_filter_t; + +typedef struct hb_qsv_sync_s{ + int frame_go; + int status; + hb_cond_t *frame_completed; + hb_lock_t *frame_completed_lock; + + hb_buffer_t *in; + hb_buffer_t *out; +} hb_qsv_sync_t; + +typedef struct hb_filter_private_s +{ + hb_job_t *job; + hb_list_t *list; + + hb_qsv_sync_t pre; + hb_qsv_sync_t pre_busy; + + hb_qsv_sync_t post; + hb_qsv_sync_t post_busy; + + hb_qsv_space *vpp_space; + hb_list_t *qsv_user; + + struct SwsContext* sws_context_to_nv12; + struct SwsContext* sws_context_from_nv12; +} hb_filter_private_t_qsv; + +// methods to be called by Media SDK +mfxStatus MFX_CDECL qsv_PluginInit(mfxHDL pthis, mfxCoreInterface *core); +mfxStatus MFX_CDECL qsv_PluginClose (mfxHDL pthis); +mfxStatus MFX_CDECL qsv_GetPluginParam(mfxHDL pthis, mfxPluginParam *par); +mfxStatus MFX_CDECL qsv_Submit(mfxHDL pthis, const mfxHDL *in, mfxU32 in_num, const mfxHDL *out, mfxU32 out_num, mfxThreadTask *task); +mfxStatus MFX_CDECL qsv_Execute(mfxHDL pthis, mfxThreadTask task, mfxU32 uid_p, mfxU32 uid_a); +mfxStatus MFX_CDECL qsv_FreeResources(mfxHDL pthis, mfxThreadTask task, mfxStatus sts); + +// methods to be called by us +mfxStatus plugin_init(qsv_filter_t*,mfxVideoParam*); +mfxStatus plugin_close(qsv_filter_t*); + +//internal functions +mfxExtBuffer* get_ext_buffer(mfxExtBuffer**, mfxU32, mfxU32); +int get_free_task(hb_list_t*); +mfxStatus process_filter(qsv_filter_task_t*,void*); +mfxStatus lock_frame(mfxFrameAllocator *,mfxFrameSurface1*); +mfxStatus unlock_frame(mfxFrameAllocator *,mfxFrameSurface1*); + + +#endif // HB_PROJECT_FEATURE_QSV +#endif //QSV_FILTER_PP_H diff --git a/libhb/handbrake/qsv_libav.h b/libhb/handbrake/qsv_libav.h new file mode 100644 index 000000000..b74b50c2b --- /dev/null +++ b/libhb/handbrake/qsv_libav.h @@ -0,0 +1,481 @@ +/* ********************************************************************* *\ + +Copyright (C) 2013 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +- Neither the name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +\* ********************************************************************* */ + +#ifndef HB_QSV_LIBAV_H +#define HB_QSV_LIBAV_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_qsv + * Common header for QSV/MediaSDK acceleration + */ + +/** + * @defgroup lavc_codec_hwaccel_qsv QSV/MediaSDK based Decode/Encode and VPP + * @ingroup lavc_codec_hwaccel + * + * As Intel Quick Sync Video (QSV) can decode/preprocess/encode with HW + * acceleration. + * + * Supported features: + * - access: + * - format AV_PIX_FMT_QSV_H264, AVCodec decoder based implementation + * - name "h264_qsv", avcodec_find_decoder_by_name( "h264_qsv") + * - IO Pattern: + * - Opaque memory: MFX_IOPATTERN_OUT_OPAQUE_MEMORY // Video memory is + * MFX_IMPL_HARDWARE or MFX_IMPL_AUTO and runtime support, + * otherwise: System Memory + * - System memory: MFX_IOPATTERN_OUT_SYSTEM_MEMORY + * - Allocators: + * - default allocator for System memory: MFX_MEMTYPE_SYSTEM_MEMORY + * - details: + * implementation as "per frame" + * + * TODO list: + * - access: + * - format AV_PIX_FMT_QSV_MPEG2 + * - format AV_PIX_FMT_QSV_VC1 + * - format AV_PIX_FMT_QSV, see "details" below + * - IO Pattern: + * - VIDEO_MEMORY // MFX_IOPATTERN_OUT_VIDEO_MEMORY + * - Allocators: + * - Video memory: MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET / + * MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET + * - details: + * "per slice" support: AV_PIX_FMT_QSV with AVHWAccel based implementation + * + * Note hb_qsv_config struct required to fill in via + * AVCodecContext.hwaccel_context + * + * As per frame, note AVFrame.data[2] (qsv_atom) used for frame atom id, + * data/linesize should be used together with SYSTEM_MEMORY and tested + * + * Note: Compilation would require: + * - Intel MediaSDK headers, Full SDK is available from the original web site: + * http://software.intel.com/en-us/vcsource/tools/media-SDK + * Will be referenced as mfx*.h (mfxdefs.h, mfxstructures.h, ... ) + * and + * - Final application has to link against Intel MediaSDK dispatcher, available + * at MediaSDK as well + * + * Target OS: as per available dispatcher and driver support + * + * Implementation details: + * Provided struct hb_qsv_context contain several struct hb_qsv_space(s) for decode, + * VPP and encode. + * hb_qsv_space just contain needed environment for the appropriate action. + * Based on this - pipeline (see pipes) will be build to pass details such as + * mfxFrameSurface1* and mfxSyncPoint* from one action to the next. + * + * Resources re-usage (hb_qsv_flush_stages): + * hb_qsv_context *qsv = (hb_qsv_context *)video_codec_ctx->priv_data; + * hb_qsv_list *pipe = (hb_qsv_list *)video_frame->data[2]; + * hb_qsv_flush_stages( qsv->pipes, &pipe ); + * + * DTS re-usage: + * hb_qsv_dts_pop(qsv); + * + * for video,DX9/11 memory it has to be Unlock'ed as well + * + * Implementation is thread aware and uses synchronization point(s) from MediaSDK + * as per configuration. + * + * For the details of MediaSDK usage and options available - please refer to the + * available documentation at MediaSDK. + * + * Feature set used from MSDK is defined by HB_QSV_MSDK_VERSION_MAJOR and + * HB_QSV_MSDK_VERSION_MINOR + * + * @{ + */ + +#include <stdint.h> +#include <string.h> +#include "mfx/mfxvideo.h" +#include "libavutil/mem.h" +#include "libavutil/time.h" + +#if defined (__GNUC__) +#include <pthread.h> +#define ff_qsv_atomic_inc(ptr) __sync_add_and_fetch(ptr,1) +#define ff_qsv_atomic_dec(ptr) __sync_sub_and_fetch (ptr,1) +#elif HAVE_WINDOWS_H // MSVC case +#include <windows.h> +#if HAVE_PTHREADS +#include <pthread.h> +#elif HAVE_W32THREADS +#include "w32pthreads.h" +#endif +#define ff_qsv_atomic_inc(ptr) InterlockedIncrement(ptr) +#define ff_qsv_atomic_dec(ptr) InterlockedDecrement (ptr) +#endif + + +// sleep is defined in milliseconds +#define hb_qsv_sleep(x) av_usleep((x)*1000) + +#define HB_QSV_ZERO_MEMORY(VAR) {memset(&VAR, 0, sizeof(VAR));} +#define HB_QSV_ALIGN32(X) (((mfxU32)((X)+31)) & (~ (mfxU32)31)) +#define HB_QSV_ALIGN16(value) (((value + 15) >> 4) << 4) +#ifndef HB_QSV_PRINT_RET_MSG +#define HB_QSV_PRINT_RET_MSG(ERR) { fprintf(stderr, "Error code %d,\t%s\t%d\n", ERR, __FUNCTION__, __LINE__); } +#endif + +#ifndef HB_QSV_DEBUG_ASSERT +#define HB_QSV_DEBUG_ASSERT(x,y) { if ((x)) { fprintf(stderr, "\nASSERT: %s\n", y); } } +#endif + +#define HB_QSV_CHECK_RET(P, X, ERR) {if ((X) > (P)) {HB_QSV_PRINT_RET_MSG(ERR); return;}} +#define HB_QSV_CHECK_RESULT(P, X, ERR) {if ((X) > (P)) {HB_QSV_PRINT_RET_MSG(ERR); return ERR;}} +#define HB_QSV_CHECK_POINTER(P, ERR) {if (!(P)) {HB_QSV_PRINT_RET_MSG(ERR); return ERR;}} +#define HB_QSV_IGNORE_MFX_STS(P, X) {if ((X) == (P)) {P = MFX_ERR_NONE;}} + +#define HB_QSV_ID_BUFFER MFX_MAKEFOURCC('B','U','F','F') +#define HB_QSV_ID_FRAME MFX_MAKEFOURCC('F','R','M','E') + +#define HB_QSV_SURFACE_NUM 80 +#define HB_QSV_SYNC_NUM HB_QSV_SURFACE_NUM*3/4 +#define HB_QSV_BUF_SIZE_DEFAULT 4096*2160*10 +#define HB_QSV_JOB_SIZE_DEFAULT 10 +#define HB_QSV_SYNC_TIME_DEFAULT 10000 +// see hb_qsv_get_free_sync, hb_qsv_get_free_surface , 100 if usleep(10*1000)(10ms) == 1 sec +#define HB_QSV_REPEAT_NUM_DEFAULT 100 +#define HB_QSV_ASYNC_DEPTH_DEFAULT 4 + +// version of MSDK/QSV API currently used +#define HB_QSV_MSDK_VERSION_MAJOR 1 +#define HB_QSV_MSDK_VERSION_MINOR 3 + +typedef enum HB_QSV_STAGE_TYPE { + +#define HB_QSV_DECODE_MASK 0x001 + HB_QSV_DECODE = 0x001, + +#define HB_QSV_VPP_MASK 0x0F0 + // "Mandatory VPP filter" , might be with "Hint-based VPP filters" + HB_QSV_VPP_DEFAULT = 0x010, + // "User Modules" etc + HB_QSV_VPP_USER = 0x020, + +#define av_QSV_ENCODE_MASK 0x100 + HB_QSV_ENCODE = 0x100 +#define HB_QSV_ANY_MASK 0xFFF +} HB_QSV_STAGE_TYPE; + + +typedef struct hb_qsv_list { + // practically pthread_mutex_t + void *mutex; + pthread_mutexattr_t mta; + + void **items; + int items_alloc; + + int items_count; +} hb_qsv_list; + +typedef struct hb_qsv_sync { + mfxSyncPoint* p_sync; + int in_use; +} hb_qsv_sync; + +typedef struct hb_qsv_stage { + HB_QSV_STAGE_TYPE type; + struct { + mfxBitstream *p_bs; + mfxFrameSurface1 *p_surface; + } in; + struct { + mfxBitstream *p_bs; + mfxFrameSurface1 *p_surface; + hb_qsv_sync *sync; + } out; + hb_qsv_list *pending; +} hb_qsv_stage; + +typedef struct hb_qsv_task { + mfxBitstream *bs; + hb_qsv_stage *stage; +} hb_qsv_task; + + +typedef struct hb_qsv_space { + + uint8_t is_init_done; + + HB_QSV_STAGE_TYPE type; + + mfxVideoParam m_mfxVideoParam; + + mfxFrameAllocResponse response; + mfxFrameAllocRequest request[2]; // [0] - in, [1] - out, if needed + + mfxExtOpaqueSurfaceAlloc ext_opaque_alloc; + mfxExtBuffer **p_ext_params; + uint16_t p_ext_param_num; + + uint16_t surface_num_max_used; + uint16_t surface_num; + mfxFrameSurface1 *p_surfaces[HB_QSV_SURFACE_NUM]; + + uint16_t sync_num_max_used; + uint16_t sync_num; + hb_qsv_sync *p_syncp[HB_QSV_SYNC_NUM]; + + mfxBitstream bs; + uint8_t *p_buf; + size_t p_buf_max_size; + + // only for encode and tasks + hb_qsv_list *tasks; + + hb_qsv_list *pending; + + // storage for allocations/mfxMemId* + mfxMemId *mids; +} hb_qsv_space; + +typedef struct hb_qsv_context { + volatile int is_context_active; + + mfxIMPL impl; + mfxSession mfx_session; + mfxVersion ver; + + // decode + hb_qsv_space *dec_space; + // encode + hb_qsv_space *enc_space; + // vpp + hb_qsv_list *vpp_space; + + hb_qsv_list *pipes; + + // MediaSDK starting from API version 1.6 includes DecodeTimeStamp + // in addition to TimeStamp + // see also HB_QSV_MSDK_VERSION_MINOR , HB_QSV_MSDK_VERSION_MAJOR + hb_qsv_list *dts_seq; + + // practically pthread_mutex_t + void *qts_seq_mutex; + + int is_anex; + + void *qsv_config; + +} hb_qsv_context; + +typedef enum { + QSV_PART_ANY = 0, + QSV_PART_LOWER, + QSV_PART_UPPER +} hb_qsv_split; + +typedef struct { + int64_t dts; +} hb_qsv_dts; + +typedef struct hb_qsv_alloc_frame { + mfxU32 id; + mfxFrameInfo info; +} hb_qsv_alloc_frame; + +typedef struct hb_qsv_alloc_buffer { + mfxU32 id; + mfxU32 nbytes; + mfxU16 type; +} hb_qsv_alloc_buffer; + +typedef struct hb_qsv_allocators_space { + hb_qsv_space *space; + mfxFrameAllocator frame_alloc; + mfxBufferAllocator buffer_alloc; +} hb_qsv_allocators_space; + +typedef struct hb_qsv_config { + /** + * Set asynch depth of processing with QSV + * Format: 0 and more + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int async_depth; + + /** + * Range of numbers that indicate trade-offs between quality and speed. + * Format: from 1/MFX_TARGETUSAGE_BEST_QUALITY to 7/MFX_TARGETUSAGE_BEST_SPEED inclusive + * + * - encoding: Set by user. + * - decoding: unused + */ + int target_usage; + + /** + * Number of reference frames; if NumRefFrame = 0, this parameter is not specified. + * Format: 0 and more + * + * - encoding: Set by user. + * - decoding: unused + */ + int num_ref_frame; + + /** + * Distance between I- or P- key frames; if it is zero, the GOP structure is unspecified. + * Note: If GopRefDist = 1, there are no B-frames used. + * + * - encoding: Set by user. + * - decoding: unused + */ + int gop_ref_dist; + + /** + * Number of pictures within the current GOP (Group of Pictures); if GopPicSize=0, + * then the GOP size is unspecified. If GopPicSize=1, only I-frames are used. + * + * - encoding: Set by user. + * - decoding: unused + */ + int gop_pic_size; + + /** + * Set type of surfaces used with QSV + * Format: "IOPattern enum" of Media SDK + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int io_pattern; + + /** + * Set amount of additional surfaces might be needed + * Format: amount of additional buffers(surfaces+syncs) + * to allocate in advance + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int additional_buffers; + + /** + * If pipeline should be sync. + * Format: wait time in milliseconds, + * HB_QSV_SYNC_TIME_DEFAULT/10000 might be a good value + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int sync_need; + + /** + * Type of implementation needed + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int impl_requested; + + /** + * if QSV usage is multithreaded. + * Format: Yes/No, 1/0 + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + int usage_threaded; + + /** + * if QSV use an external allocation (valid per session/mfxSession) + * Format: pointer to allocators, if default: 0 + * + * note that: + * System Memory: can be used without provided and external allocator, + * meaning MediaSDK will use an internal one + * Video Memory: in this case - we must provide an external allocator + * Also, Media SDK session doesn't require external allocator if the application + * uses opaque memory + * + * Calls SetFrameAllocator/SetBufferAllocator + * (MFXVideoCORE_SetFrameAllocator/MFXVideoCORE_SetBufferAllocator) + * are to pass allocators to Media SDK + * + * - encoding: Set by user. + * - decoding: Set by user. + */ + hb_qsv_allocators_space *allocators; + +} hb_qsv_config; + +#define ANEX_UNKNOWN 0 +#define ANEX_PREFIX 1 +#define ANEX_NO_PREFIX 2 + +static const uint8_t ff_prefix_code[] = { 0x00, 0x00, 0x00, 0x01 }; + +int hb_qsv_get_free_sync(hb_qsv_space *, hb_qsv_context *); +int hb_qsv_get_free_surface(hb_qsv_space *, hb_qsv_context *, mfxFrameInfo *, + hb_qsv_split); +int hb_qsv_get_free_encode_task(hb_qsv_list *); + +int av_is_qsv_available(mfxIMPL, mfxVersion *); +void hb_qsv_wait_on_sync(hb_qsv_context *, hb_qsv_stage *); + +void hb_qsv_add_context_usage(hb_qsv_context *, int); + +void hb_qsv_pipe_list_create(hb_qsv_list **, int); +void hb_qsv_pipe_list_clean(hb_qsv_list **); + +void hb_qsv_add_stagee(hb_qsv_list **, hb_qsv_stage *, int); +hb_qsv_stage *hb_qsv_get_last_stage(hb_qsv_list *); +hb_qsv_list *hb_qsv_pipe_by_stage(hb_qsv_list *, hb_qsv_stage *); +void hb_qsv_flush_stages(hb_qsv_list *, hb_qsv_list **); + +void hb_qsv_dts_ordered_insert(hb_qsv_context *, int, int, int64_t, int); +void hb_qsv_dts_pop(hb_qsv_context *); + +hb_qsv_stage *hb_qsv_stage_init(void); +void hb_qsv_stage_clean(hb_qsv_stage **); +int hb_qsv_context_clean(hb_qsv_context *); + +int ff_qsv_is_sync_in_pipe(mfxSyncPoint *, hb_qsv_context *); +int ff_qsv_is_surface_in_pipe(mfxFrameSurface1 *, hb_qsv_context *); + +hb_qsv_list *hb_qsv_list_init(int); +int hb_qsv_list_lock(hb_qsv_list *); +int hb_qsv_list_unlock(hb_qsv_list *); +int hb_qsv_list_add(hb_qsv_list *, void *); +void hb_qsv_list_rem(hb_qsv_list *, void *); +void hb_qsv_list_insert(hb_qsv_list *, int, void *); +void hb_qsv_list_close(hb_qsv_list **); + +int hb_qsv_list_count(hb_qsv_list *); +void *hb_qsv_list_item(hb_qsv_list *, int); + +/* @} */ + +#endif // HB_QSV_LIBAV_H diff --git a/libhb/handbrake/qsv_memory.h b/libhb/handbrake/qsv_memory.h new file mode 100644 index 000000000..3434114e1 --- /dev/null +++ b/libhb/handbrake/qsv_memory.h @@ -0,0 +1,60 @@ +/* ********************************************************************* *\ + +Copyright (C) 2013 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +- Neither the name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +\* ********************************************************************* */ + +#ifndef QSV_MEMORY_H +#define QSV_MEMORY_H + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV + +#include "mfx/mfxplugin.h" +#include "handbrake/qsv_libav.h" + +typedef struct{ + + struct{ + // for "planes" , Y and VU + uint8_t *data[2]; + int strides[2]; + } qsv_data; + + struct{ + // for each plane, Y U V + uint8_t *data[3]; + int strides[3]; + } data; + int width; + int height; +} qsv_memory_copy_t; + +int qsv_nv12_to_yuv420(struct SwsContext* sws_context,hb_buffer_t* dst, mfxFrameSurface1* src,mfxCoreInterface *core); +int qsv_yuv420_to_nv12(struct SwsContext* sws_context,mfxFrameSurface1* dst, hb_buffer_t* src); + +#endif // HB_PROJECT_FEATURE_QSV +#endif // QSV_MEMORY_H diff --git a/libhb/handbrake/ssautil.h b/libhb/handbrake/ssautil.h new file mode 100644 index 000000000..319262b73 --- /dev/null +++ b/libhb/handbrake/ssautil.h @@ -0,0 +1,34 @@ +/* ssautil.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef __SSAUTIL_H__ +#define __SSAUTIL_H__ + +typedef struct hb_subtitle_style_s hb_subtitle_style_t; +typedef struct hb_subtitle_style_context_s hb_subtitle_style_context_t; + +typedef struct hb_tx3g_output_buf_s hb_tx3g_output_buf_t; +typedef struct hb_tx3g_style_context_s hb_tx3g_style_context_t; + +#define HB_STYLE_FLAG_ITALIC 0x0001 +#define HB_STYLE_FLAG_BOLD 0x0002 +#define HB_STYLE_FLAG_UNDERLINE 0x0004 + +hb_subtitle_style_context_t * hb_subtitle_style_init(const char * ssa_header); +hb_tx3g_style_context_t * hb_tx3g_style_init( + int height, const char * ssa_header); +void hb_subtitle_style_close(hb_subtitle_style_context_t ** ctx); +void hb_tx3g_style_close(hb_tx3g_style_context_t ** ctx); + +void hb_muxmp4_process_subtitle_style( + hb_tx3g_style_context_t * ctx, + uint8_t * input, uint8_t ** output, + uint8_t ** style, uint16_t * stylesize); + +#endif // __SSAUTIL_H__ diff --git a/libhb/handbrake/taskset.h b/libhb/handbrake/taskset.h new file mode 100644 index 000000000..35c21e1c0 --- /dev/null +++ b/libhb/handbrake/taskset.h @@ -0,0 +1,55 @@ +/* taskset.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_TASKSET_H +#define HB_TASKSET_H + +#define TASKSET_POSIX_COMPLIANT 1 + +#include "handbrake/bits.h" + +typedef struct hb_taskset_s { + int thread_count; + int arg_size; + int bitmap_elements; + hb_thread_t ** task_threads; + uint8_t * task_threads_args; + uint32_t * task_begin_bitmap; // Threads can begin + uint32_t * task_complete_bitmap; // Threads have completed + uint32_t * task_stop_bitmap; // Threads should exit + hb_lock_t * task_cond_lock; // Held during condition tests + hb_cond_t * task_begin; // Threads can begin work + hb_cond_t * task_complete; // Threads have finished work. +} taskset_t; + +int taskset_init( taskset_t *, int /*thread_count*/, size_t /*user_arg_size*/ ); +void taskset_cycle( taskset_t * ); +void taskset_fini( taskset_t * ); + +int taskset_thread_spawn( taskset_t *, int /*thr_idx*/, const char * /*descr*/, + thread_func_t *, int /*priority*/ ); +void taskset_thread_wait4start( taskset_t *, int ); +void taskset_thread_complete( taskset_t *, int ); + +static inline void *taskset_thread_args( taskset_t *, int ); +static inline int taskset_thread_stop( taskset_t *, int ); + +static inline void * +taskset_thread_args( taskset_t *ts, int thr_idx ) +{ + return( ts->task_threads_args + ( ts->arg_size * thr_idx ) ); +} + +static inline int +taskset_thread_stop( taskset_t *ts, int thr_idx ) +{ + return bit_is_set( ts->task_stop_bitmap, thr_idx ); +} + +#endif /* HB_TASKSET_H */ diff --git a/libhb/handbrake/vce_common.h b/libhb/handbrake/vce_common.h new file mode 100644 index 000000000..0c5da62b2 --- /dev/null +++ b/libhb/handbrake/vce_common.h @@ -0,0 +1,20 @@ +/* vce_common.h + * + * Copyright (c) 2003-2019 HandBrake Team + * This file is part of the HandBrake source code. + * Homepage: <http://handbrake.fr/>. + * It may be used under the terms of the GNU General Public License v2. + * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +int hb_vce_h264_available(); +int hb_vce_h265_available(); + +static const char * const hb_vce_h264_profile_names[] = { "baseline", "main", "high", NULL, }; +static const char * const hb_vce_h265_profile_names[] = { "main", NULL, }; + +static const char * const hb_vce_h264_level_names[] = +{ + "auto", "1.0", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", + "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL, +}; |