Gui: cli: libhb: generalize the mp4optimize option and enable it for mkv/webm to move cues to the front.

This commit is contained in:
Damiano Galassi 2023-08-15 08:29:18 +02:00 committed by Damiano Galassi
parent c9fc5c3636
commit ef40f60e00
32 changed files with 9519 additions and 9522 deletions

View File

@ -1268,7 +1268,6 @@ void ghb_show_container_options(signal_user_data_t *ud)
{ {
GtkWidget *w1, *w2, *w3; GtkWidget *w1, *w2, *w3;
w1 = GHB_WIDGET(ud->builder, "AlignAVStart"); w1 = GHB_WIDGET(ud->builder, "AlignAVStart");
w2 = GHB_WIDGET(ud->builder, "Mp4HttpOptimize");
w3 = GHB_WIDGET(ud->builder, "Mp4iPodCompatible"); w3 = GHB_WIDGET(ud->builder, "Mp4iPodCompatible");
const char *mux_id; const char *mux_id;
@ -1280,7 +1279,6 @@ void ghb_show_container_options(signal_user_data_t *ud)
gint enc = ghb_settings_video_encoder_codec(ud->settings, "VideoEncoder"); gint enc = ghb_settings_video_encoder_codec(ud->settings, "VideoEncoder");
gtk_widget_set_visible(w1, (mux->format & HB_MUX_MASK_MP4)); gtk_widget_set_visible(w1, (mux->format & HB_MUX_MASK_MP4));
gtk_widget_set_visible(w2, (mux->format & HB_MUX_MASK_MP4));
gtk_widget_set_visible(w3, (mux->format & HB_MUX_MASK_MP4) && gtk_widget_set_visible(w3, (mux->format & HB_MUX_MASK_MP4) &&
(enc == HB_VCODEC_X264_8BIT)); (enc == HB_VCODEC_X264_8BIT));
} }

View File

@ -2899,7 +2899,7 @@ Modifications will be discarded.</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="Mp4HttpOptimize"> <object class="GtkCheckButton" id="Optimize">
<property name="label" translatable="yes">Web Optimized</property> <property name="label" translatable="yes">Web Optimized</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>

View File

@ -2516,12 +2516,12 @@ Modifications will be discarded.</property>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="Mp4HttpOptimize"> <object class="GtkCheckButton" id="Optimize">
<property name="label" translatable="yes">Web Optimized</property> <property name="label" translatable="yes">Web Optimized</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">False</property> <property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Optimize the layout of the MP4 file for progressive download. <property name="tooltip_text" translatable="yes">Optimize the layout of the file for progressive download.
This allows a player to initiate playback before downloading the entire file.</property> This allows a player to initiate playback before downloading the entire file.</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="draw_indicator">True</property> <property name="draw_indicator">True</property>

View File

@ -60,16 +60,16 @@ GhbValue* ghb_get_job_chapter_list(GhbValue *settings)
return chapters; return chapters;
} }
GhbValue* ghb_get_job_mp4_settings(GhbValue *settings) GhbValue* ghb_get_job_container_settings(GhbValue *settings)
{ {
GhbValue *dest = ghb_get_job_dest_settings(settings); GhbValue *dest = ghb_get_job_dest_settings(settings);
GhbValue *mp4 = ghb_dict_get(dest, "Mp4Options"); GhbValue *options = ghb_dict_get(dest, "Options");
if (mp4 == NULL) if (options == NULL)
{ {
mp4 = ghb_dict_new(); options = ghb_dict_new();
ghb_dict_set(dest, "Mp4Options", mp4); ghb_dict_set(dest, "Options", options);
} }
return mp4; return options;
} }
GhbValue* ghb_get_job_source_settings(GhbValue *settings) GhbValue* ghb_get_job_source_settings(GhbValue *settings)

View File

@ -34,7 +34,7 @@ GhbValue* ghb_get_job_dest_settings(GhbValue *settings);
GhbValue* ghb_get_job_video_settings(GhbValue *settings); GhbValue* ghb_get_job_video_settings(GhbValue *settings);
GhbValue* ghb_get_job_metadata_settings(GhbValue *settings); GhbValue* ghb_get_job_metadata_settings(GhbValue *settings);
GhbValue* ghb_get_job_chapter_list(GhbValue *settings); GhbValue* ghb_get_job_chapter_list(GhbValue *settings);
GhbValue* ghb_get_job_mp4_settings(GhbValue *settings); GhbValue* ghb_get_job_container_settings(GhbValue *settings);
GhbValue* ghb_get_job_audio_settings(GhbValue *settings); GhbValue* ghb_get_job_audio_settings(GhbValue *settings);
GhbValue* ghb_get_job_audio_list(GhbValue *settings); GhbValue* ghb_get_job_audio_list(GhbValue *settings);
GhbValue* ghb_get_job_subtitle_settings(GhbValue *settings); GhbValue* ghb_get_job_subtitle_settings(GhbValue *settings);

View File

@ -267,7 +267,7 @@ static void queue_update_summary (GhbValue * queueDict, signal_user_data_t *ud)
if (container->format & HB_MUX_MASK_MP4) if (container->format & HB_MUX_MASK_MP4)
{ {
ipod = ghb_dict_get_bool(uiDict, "Mp4iPodCompatible"); ipod = ghb_dict_get_bool(uiDict, "Mp4iPodCompatible");
http = ghb_dict_get_bool(uiDict, "Mp4HttpOptimize"); http = ghb_dict_get_bool(uiDict, "Optimize");
} }
sep = "\n"; sep = "\n";

View File

@ -793,7 +793,7 @@ struct hb_job_s
// faithful reproduction of the source // faithful reproduction of the source
// stream and may have blank frames // stream and may have blank frames
// added or initial frames dropped. // added or initial frames dropped.
int mp4_optimize; int optimize;
int ipod_atom; int ipod_atom;
int indepth_scan; int indepth_scan;

File diff suppressed because it is too large Load Diff

View File

@ -656,13 +656,13 @@ hb_dict_t* hb_job_to_dict( const hb_job_t * job )
{ {
hb_dict_set(dest_dict, "File", hb_value_string(job->file)); hb_dict_set(dest_dict, "File", hb_value_string(job->file));
} }
if (job->mux & HB_MUX_MASK_MP4) if (job->mux)
{ {
hb_dict_t *mp4_dict; hb_dict_t *options_dict;
mp4_dict = json_pack_ex(&error, 0, "{s:o, s:o}", options_dict = json_pack_ex(&error, 0, "{s:o, s:o}",
"Mp4Optimize", hb_value_bool(job->mp4_optimize), "Optimize", hb_value_bool(job->optimize),
"IpodAtom", hb_value_bool(job->ipod_atom)); "IpodAtom", hb_value_bool(job->ipod_atom));
hb_dict_set(dest_dict, "Mp4Options", mp4_dict); hb_dict_set(dest_dict, "Options", options_dict);
} }
hb_dict_t *source_dict = hb_dict_get(dict, "Source"); hb_dict_t *source_dict = hb_dict_get(dict, "Source");
hb_dict_t *range_dict; hb_dict_t *range_dict;
@ -1122,7 +1122,7 @@ hb_job_t* hb_dict_to_job( hb_handle_t * h, hb_dict_t *dict )
"s:i," "s:i,"
// Destination {File, Mux, InlineParameterSets, AlignAVStart, // Destination {File, Mux, InlineParameterSets, AlignAVStart,
// ChapterMarkers, ChapterList, // ChapterMarkers, ChapterList,
// Mp4Options {Mp4Optimize, IpodAtom}} // Options {Optimize, IpodAtom}}
"s:{s?s, s:o, s?b, s?b, s:b, s?o s?{s?b, s?b}}," "s:{s?s, s:o, s?b, s?b, s:b, s?o s?{s?b, s?b}},"
// Source {Angle, Range {Type, Start, End, SeekPoints}} // Source {Angle, Range {Type, Start, End, SeekPoints}}
"s:{s?i, s?{s:s, s?I, s?I, s?I}}," "s:{s?i, s?{s:s, s?I, s?I, s?I}},"
@ -1165,8 +1165,8 @@ hb_job_t* hb_dict_to_job( hb_handle_t * h, hb_dict_t *dict )
"AlignAVStart", unpack_b(&job->align_av_start), "AlignAVStart", unpack_b(&job->align_av_start),
"ChapterMarkers", unpack_b(&job->chapter_markers), "ChapterMarkers", unpack_b(&job->chapter_markers),
"ChapterList", unpack_o(&chapter_list), "ChapterList", unpack_o(&chapter_list),
"Mp4Options", "Options",
"Mp4Optimize", unpack_b(&job->mp4_optimize), "Optimize", unpack_b(&job->optimize),
"IpodAtom", unpack_b(&job->ipod_atom), "IpodAtom", unpack_b(&job->ipod_atom),
"Source", "Source",
"Angle", unpack_i(&job->angle), "Angle", unpack_i(&job->angle),

View File

@ -185,7 +185,7 @@ static int avformatInit( hb_mux_object_t * m )
av_dict_set(&av_opts, "brand", "mp42", 0); av_dict_set(&av_opts, "brand", "mp42", 0);
av_dict_set(&av_opts, "strict", "experimental", 0); av_dict_set(&av_opts, "strict", "experimental", 0);
if (job->mp4_optimize) if (job->optimize)
av_dict_set(&av_opts, "movflags", "faststart+disable_chpl+write_colr", 0); av_dict_set(&av_opts, "movflags", "faststart+disable_chpl+write_colr", 0);
else else
av_dict_set(&av_opts, "movflags", "+disable_chpl+write_colr", 0); av_dict_set(&av_opts, "movflags", "+disable_chpl+write_colr", 0);
@ -199,6 +199,10 @@ static int avformatInit( hb_mux_object_t * m )
muxer_name = "matroska"; muxer_name = "matroska";
meta_mux = META_MUX_MKV; meta_mux = META_MUX_MKV;
av_dict_set(&av_opts, "default_mode", "passthrough", 0); av_dict_set(&av_opts, "default_mode", "passthrough", 0);
if (job->optimize)
{
av_dict_set(&av_opts, "cues_to_front", "1", 0);
}
break; break;
case HB_MUX_AV_WEBM: case HB_MUX_AV_WEBM:
@ -209,6 +213,10 @@ static int avformatInit( hb_mux_object_t * m )
muxer_name = "webm"; muxer_name = "webm";
meta_mux = META_MUX_WEBM; meta_mux = META_MUX_WEBM;
av_dict_set(&av_opts, "default_mode", "passthrough", 0); av_dict_set(&av_opts, "default_mode", "passthrough", 0);
if (job->optimize)
{
av_dict_set(&av_opts, "cues_to_front", "1", 0);
}
break; break;
default: default:

View File

@ -1955,16 +1955,16 @@ int hb_preset_apply_mux(const hb_dict_t *preset, hb_dict_t *job_dict)
hb_dict_set(dest_dict, "InlineParameterSets", hb_dict_set(dest_dict, "InlineParameterSets",
hb_value_xform(hb_dict_get(preset, "InlineParameterSets"), hb_value_xform(hb_dict_get(preset, "InlineParameterSets"),
HB_VALUE_TYPE_BOOL)); HB_VALUE_TYPE_BOOL));
if (mux & HB_MUX_MASK_MP4) if (mux)
{ {
hb_dict_t *mp4_dict = hb_dict_init(); hb_dict_t *options_dict = hb_dict_init();
hb_dict_set(mp4_dict, "Mp4Optimize", hb_dict_set(options_dict, "Optimize",
hb_value_xform(hb_dict_get(preset, "Mp4HttpOptimize"), hb_value_xform(hb_dict_get(preset, "Optimize"),
HB_VALUE_TYPE_BOOL)); HB_VALUE_TYPE_BOOL));
hb_dict_set(mp4_dict, "IpodAtom", hb_dict_set(options_dict, "IpodAtom",
hb_value_xform(hb_dict_get(preset, "Mp4iPodCompatible"), hb_value_xform(hb_dict_get(preset, "Mp4iPodCompatible"),
HB_VALUE_TYPE_BOOL)); HB_VALUE_TYPE_BOOL));
hb_dict_set(dest_dict, "Mp4Options", mp4_dict); hb_dict_set(dest_dict, "Options", options_dict);
} }
return 0; return 0;
@ -2795,6 +2795,12 @@ static void und_to_any(hb_value_array_t * list)
} }
} }
static void import_container_settings_51_0_0(hb_value_t *preset)
{
int optimize = hb_dict_get_bool(preset, "Mp4HttpOptimize");
hb_dict_set_bool(preset, "Optimize", optimize);
}
static void import_video_pass_settings_50_0_0(hb_value_t *preset) static void import_video_pass_settings_50_0_0(hb_value_t *preset)
{ {
int two_pass = hb_dict_get_bool(preset, "VideoTwoPass"); int two_pass = hb_dict_get_bool(preset, "VideoTwoPass");
@ -3499,6 +3505,11 @@ static void import_video_0_0_0(hb_value_t *preset)
} }
} }
static void import_51_0_0(hb_value_t *preset)
{
import_container_settings_51_0_0(preset);
}
static void import_50_0_0(hb_value_t *preset) static void import_50_0_0(hb_value_t *preset)
{ {
import_video_pass_settings_50_0_0(preset); import_video_pass_settings_50_0_0(preset);
@ -3667,6 +3678,11 @@ static int preset_import(hb_value_t *preset, int major, int minor, int micro)
import_50_0_0(preset); import_50_0_0(preset);
result = 1; result = 1;
} }
else if (cmpVersion(major, minor, micro, 51, 0, 0) <= 0)
{
import_51_0_0(preset);
result = 1;
}
preset_clean(preset, hb_preset_template); preset_clean(preset, hb_preset_template);
} }

View File

@ -433,12 +433,16 @@ void hb_display_job_info(hb_job_t *job)
switch (job->mux) switch (job->mux)
{ {
case HB_MUX_AV_MP4: case HB_MUX_AV_MP4:
if (job->mp4_optimize) if (job->optimize)
hb_log(" + optimized for HTTP streaming (fast start)"); hb_log(" + optimized for HTTP streaming (fast start)");
if (job->ipod_atom) if (job->ipod_atom)
hb_log(" + compatibility atom for iPod 5G"); hb_log(" + compatibility atom for iPod 5G");
break; break;
case HB_MUX_AV_MKV:
case HB_MUX_AV_WEBM:
if (job->optimize)
hb_log(" + optimized for HTTP streaming (cues to the front)");
break;
default: default:
break; break;
} }

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22152" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22152"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -33,7 +33,7 @@
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vuy-Er-bln"> <stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vuy-Er-bln">
<rect key="frame" x="0.0" y="80" width="218" height="16"/> <rect key="frame" x="0.0" y="80" width="218" height="16"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bpr-UY-4al" userLabel="Format"> <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bpr-UY-4al" userLabel="Format">
<rect key="frame" x="-2" y="1" width="45" height="14"/> <rect key="frame" x="-2" y="1" width="45" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Format:" id="RXJ-DZ-4mh"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Format:" id="RXJ-DZ-4mh">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -46,9 +46,6 @@
</textField> </textField>
<popUpButton toolTip="Container format. Video, audio, and other tracks are combined into a single file of this type. Affects compatibility." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="txV-1R-WoD"> <popUpButton toolTip="Container format. Video, audio, and other tracks are combined into a single file of this type. Affects compatibility." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="txV-1R-WoD">
<rect key="frame" x="45" y="-4" width="177" height="22"/> <rect key="frame" x="45" y="-4" width="177" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="140" id="em9-IL-zmS"/>
</constraints>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="4NR-1i-weK" id="tqd-2J-YTU"> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="4NR-1i-weK" id="tqd-2J-YTU">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -58,6 +55,9 @@
</items> </items>
</menu> </menu>
</popUpButtonCell> </popUpButtonCell>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="140" id="em9-IL-zmS"/>
</constraints>
<connections> <connections>
<accessibilityConnection property="title" destination="bpr-UY-4al" id="2Lk-cn-fRD"/> <accessibilityConnection property="title" destination="bpr-UY-4al" id="2Lk-cn-fRD"/>
<binding destination="-2" name="enabled" keyPath="self.job" id="vIZ-WQ-JdM"> <binding destination="-2" name="enabled" keyPath="self.job" id="vIZ-WQ-JdM">
@ -103,7 +103,7 @@
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="lUi-Oc-208"> <button translatesAutoresizingMaskIntoConstraints="NO" id="lUi-Oc-208">
<rect key="frame" x="-1" y="39" width="102" height="16"/> <rect key="frame" x="-1" y="39" width="102" height="16"/>
<string key="toolTip">Optimize MP4 for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file.</string> <string key="toolTip">Optimize for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file.</string>
<buttonCell key="cell" type="check" title="Web Optimized" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="wcc-5d-Dgj"> <buttonCell key="cell" type="check" title="Web Optimized" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="wcc-5d-Dgj">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -114,12 +114,7 @@
<string key="NSValueTransformerName">NSIsNotNil</string> <string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary> </dictionary>
</binding> </binding>
<binding destination="-2" name="value" keyPath="self.job.mp4HttpOptimize" id="LYj-Km-ze0"/> <binding destination="-2" name="value" keyPath="self.job.optimize" id="E5v-QJ-Bhj"/>
<binding destination="-2" name="hidden" keyPath="self.job.mp4OptionsEnabled" previousBinding="IF3-Zz-8Fc" id="PQl-de-g6C">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
</connections> </connections>
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="fPv-Vw-I89"> <button translatesAutoresizingMaskIntoConstraints="NO" id="fPv-Vw-I89">
@ -194,7 +189,7 @@
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="u22-zk-2gT"> <stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="u22-zk-2gT">
<rect key="frame" x="0.0" y="54" width="259" height="14"/> <rect key="frame" x="0.0" y="54" width="259" height="14"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GCn-2c-Fql" userLabel="Tracks"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GCn-2c-Fql" userLabel="Tracks">
<rect key="frame" x="-2" y="0.0" width="45" height="14"/> <rect key="frame" x="-2" y="0.0" width="45" height="14"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Tracks:" id="3mF-Bb-Gon"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Tracks:" id="3mF-Bb-Gon">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -205,7 +200,7 @@
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="oGS-ya-5m8"/> <binding destination="-2" name="textColor" keyPath="self.labelColor" id="oGS-ya-5m8"/>
</connections> </connections>
</textField> </textField>
<textField horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="yRE-5c-FhX"> <textField focusRingType="none" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="yRE-5c-FhX">
<rect key="frame" x="47" y="0.0" width="214" height="14"/> <rect key="frame" x="47" y="0.0" width="214" height="14"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="210" id="gqV-xA-TUl"/> <constraint firstAttribute="width" constant="210" id="gqV-xA-TUl"/>
@ -233,7 +228,7 @@
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PVH-BQ-dOC"> <stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PVH-BQ-dOC">
<rect key="frame" x="0.0" y="27" width="259" height="14"/> <rect key="frame" x="0.0" y="27" width="259" height="14"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0kh-Uy-Yo3" userLabel="Filters"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0kh-Uy-Yo3" userLabel="Filters">
<rect key="frame" x="-2" y="0.0" width="45" height="14"/> <rect key="frame" x="-2" y="0.0" width="45" height="14"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Filters:" id="OCw-f6-uA0"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Filters:" id="OCw-f6-uA0">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -244,7 +239,7 @@
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="Y59-Gp-EZi"/> <binding destination="-2" name="textColor" keyPath="self.labelColor" id="Y59-Gp-EZi"/>
</connections> </connections>
</textField> </textField>
<textField horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="BHq-Mt-3eA"> <textField focusRingType="none" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="BHq-Mt-3eA">
<rect key="frame" x="47" y="0.0" width="214" height="14"/> <rect key="frame" x="47" y="0.0" width="214" height="14"/>
<textFieldCell key="cell" controlSize="mini" selectable="YES" sendsActionOnEndEditing="YES" title="None" id="RIB-ME-Yhh"> <textFieldCell key="cell" controlSize="mini" selectable="YES" sendsActionOnEndEditing="YES" title="None" id="RIB-ME-Yhh">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -269,7 +264,7 @@
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8JZ-RV-cxj"> <stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8JZ-RV-cxj">
<rect key="frame" x="0.0" y="0.0" width="259" height="14"/> <rect key="frame" x="0.0" y="0.0" width="259" height="14"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jgq-K8-z3W" userLabel="Size"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jgq-K8-z3W" userLabel="Size">
<rect key="frame" x="-2" y="0.0" width="45" height="14"/> <rect key="frame" x="-2" y="0.0" width="45" height="14"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Size:" id="B4a-co-0ly"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Size:" id="B4a-co-0ly">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -280,7 +275,7 @@
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="EMw-0U-JBu"/> <binding destination="-2" name="textColor" keyPath="self.labelColor" id="EMw-0U-JBu"/>
</connections> </connections>
</textField> </textField>
<textField horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Jaw-pH-rhf"> <textField focusRingType="none" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Jaw-pH-rhf">
<rect key="frame" x="47" y="0.0" width="214" height="14"/> <rect key="frame" x="47" y="0.0" width="214" height="14"/>
<textFieldCell key="cell" controlSize="mini" selectable="YES" sendsActionOnEndEditing="YES" title="None" id="xmy-Jl-mR4"> <textFieldCell key="cell" controlSize="mini" selectable="YES" sendsActionOnEndEditing="YES" title="None" id="xmy-Jl-mR4">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@ -346,28 +341,5 @@
</constraints> </constraints>
<point key="canvasLocation" x="-88.5" y="-145"/> <point key="canvasLocation" x="-88.5" y="-145"/>
</customView> </customView>
<button id="JNB-kV-52S">
<rect key="frame" x="0.0" y="0.0" width="102" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Optimize MP4 for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file.</string>
<buttonCell key="cell" type="check" title="Web Optimized" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="ma8-UR-dx2">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="-2" name="enabled" keyPath="self.job" id="GM1-ep-4mM">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
<binding destination="-2" name="value" keyPath="self.job.mp4HttpOptimize" id="oQw-Gl-n8O"/>
<binding destination="-2" name="hidden" keyPath="self.job.mp4OptionsEnabled" previousBinding="GM1-ep-4mM" id="JOB-2s-UOH">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
</connections>
<point key="canvasLocation" x="-211" y="-402"/>
</button>
</objects> </objects>
</document> </document>

View File

@ -101,7 +101,7 @@
job->mux = self.container; job->mux = self.container;
job->vcodec = self.video.encoder; job->vcodec = self.video.encoder;
job->mp4_optimize = self.mp4HttpOptimize; job->optimize = self.optimize;
if (self.container & HB_MUX_MASK_MP4) if (self.container & HB_MUX_MASK_MP4)
{ {

View File

@ -248,7 +248,7 @@ static HBMixdownTransformer *mixdownTransformer;
[options appendString:HBKitLocalizedString(@", Chapter Markers", @"Format description")]; [options appendString:HBKitLocalizedString(@", Chapter Markers", @"Format description")];
} }
if ((self.container & HB_MUX_MASK_MP4) && self.mp4HttpOptimize) if (self.optimize)
{ {
[options appendString:HBKitLocalizedString(@", Web Optimized", @"Format description")]; [options appendString:HBKitLocalizedString(@", Web Optimized", @"Format description")];
} }

View File

@ -62,7 +62,7 @@ typedef NS_ENUM(NSUInteger, HBJobHardwareDecoderUsage) {
@property (nonatomic, readwrite) int angle; @property (nonatomic, readwrite) int angle;
// Container options // Container options
@property (nonatomic, readwrite) BOOL mp4HttpOptimize; @property (nonatomic, readwrite) BOOL optimize;
@property (nonatomic, readwrite) BOOL mp4iPodCompatible; @property (nonatomic, readwrite) BOOL mp4iPodCompatible;
@property (nonatomic, readwrite) BOOL alignAVStart; @property (nonatomic, readwrite) BOOL alignAVStart;

View File

@ -98,7 +98,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
self.container = hb_container_get_from_name([preset[@"FileFormat"] UTF8String]); self.container = hb_container_get_from_name([preset[@"FileFormat"] UTF8String]);
// MP4 specifics options. // MP4 specifics options.
self.mp4HttpOptimize = [preset[@"Mp4HttpOptimize"] boolValue]; self.optimize = [preset[@"Optimize"] boolValue];
self.mp4iPodCompatible = [preset[@"Mp4iPodCompatible"] boolValue]; self.mp4iPodCompatible = [preset[@"Mp4iPodCompatible"] boolValue];
self.alignAVStart = [preset[@"AlignAVStart"] boolValue]; self.alignAVStart = [preset[@"AlignAVStart"] boolValue];
@ -133,7 +133,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
preset[@"FileFormat"] = @(hb_container_get_short_name(self.container)); preset[@"FileFormat"] = @(hb_container_get_short_name(self.container));
// MP4 specifics options. // MP4 specifics options.
preset[@"Mp4HttpOptimize"] = @(self.mp4HttpOptimize); preset[@"Optimize"] = @(self.optimize);
preset[@"AlignAVStart"] = @(self.alignAVStart); preset[@"AlignAVStart"] = @(self.alignAVStart);
preset[@"Mp4iPodCompatible"] = @(self.mp4iPodCompatible); preset[@"Mp4iPodCompatible"] = @(self.mp4iPodCompatible);
@ -262,13 +262,13 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
self.range.title = title; self.range.title = title;
} }
- (void)setMp4HttpOptimize:(BOOL)mp4HttpOptimize - (void)setOptimize:(BOOL)optimize
{ {
if (mp4HttpOptimize != _mp4HttpOptimize) if (optimize != _optimize)
{ {
[[self.undo prepareWithInvocationTarget:self] setMp4HttpOptimize:_mp4HttpOptimize]; [[self.undo prepareWithInvocationTarget:self] setOptimize:_optimize];
} }
_mp4HttpOptimize = mp4HttpOptimize; _optimize = optimize;
[[NSNotificationCenter defaultCenter] postNotificationName:HBContainerChangedNotification object:self]; [[NSNotificationCenter defaultCenter] postNotificationName:HBContainerChangedNotification object:self];
} }
@ -393,7 +393,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
copy->_container = _container; copy->_container = _container;
copy->_angle = _angle; copy->_angle = _angle;
copy->_mp4HttpOptimize = _mp4HttpOptimize; copy->_optimize = _optimize;
copy->_mp4iPodCompatible = _mp4iPodCompatible; copy->_mp4iPodCompatible = _mp4iPodCompatible;
copy->_alignAVStart = _alignAVStart; copy->_alignAVStart = _alignAVStart;
@ -462,7 +462,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
encodeInt(_container); encodeInt(_container);
encodeInt(_angle); encodeInt(_angle);
encodeBool(_mp4HttpOptimize); encodeBool(_optimize);
encodeBool(_mp4iPodCompatible); encodeBool(_mp4iPodCompatible);
encodeBool(_alignAVStart); encodeBool(_alignAVStart);
@ -502,7 +502,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
decodeInt(_container); if (_container != HB_MUX_MP4 && _container != HB_MUX_MKV && _container != HB_MUX_WEBM) { goto fail; } decodeInt(_container); if (_container != HB_MUX_MP4 && _container != HB_MUX_MKV && _container != HB_MUX_WEBM) { goto fail; }
decodeInt(_angle); if (_angle < 0) { goto fail; } decodeInt(_angle); if (_angle < 0) { goto fail; }
decodeBool(_mp4HttpOptimize); decodeBool(_optimize);
decodeBool(_mp4iPodCompatible); decodeBool(_mp4iPodCompatible);
decodeBool(_alignAVStart); decodeBool(_alignAVStart);

View File

@ -105,7 +105,7 @@
XCTAssertEqualObjects(self.job.presetName, self.modifiedJob.presetName); XCTAssertEqualObjects(self.job.presetName, self.modifiedJob.presetName);
XCTAssertEqual(self.job.container, self.modifiedJob.container); XCTAssertEqual(self.job.container, self.modifiedJob.container);
XCTAssertEqual(self.job.mp4HttpOptimize, self.modifiedJob.mp4HttpOptimize); XCTAssertEqual(self.job.optimize, self.modifiedJob.optimize);
XCTAssertEqual(self.job.mp4iPodCompatible, self.modifiedJob.mp4iPodCompatible); XCTAssertEqual(self.job.mp4iPodCompatible, self.modifiedJob.mp4iPodCompatible);
XCTAssertEqual(self.job.angle, self.modifiedJob.angle); XCTAssertEqual(self.job.angle, self.modifiedJob.angle);

View File

@ -34,7 +34,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -144,7 +144,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -254,7 +254,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -363,7 +363,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -472,7 +472,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -581,7 +581,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -690,7 +690,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -800,7 +800,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -910,7 +910,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1019,7 +1019,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1128,7 +1128,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1237,7 +1237,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1359,7 +1359,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1482,7 +1482,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1606,7 +1606,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1729,7 +1729,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1852,7 +1852,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -1975,7 +1975,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2098,7 +2098,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2222,7 +2222,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2346,7 +2346,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2469,7 +2469,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2592,7 +2592,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2715,7 +2715,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2831,7 +2831,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -2940,7 +2940,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3049,7 +3049,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3158,7 +3158,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3267,7 +3267,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3376,7 +3376,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3485,7 +3485,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3594,7 +3594,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3703,7 +3703,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3812,7 +3812,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -3921,7 +3921,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4051,7 +4051,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4174,7 +4174,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4283,7 +4283,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4392,7 +4392,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4501,7 +4501,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4610,7 +4610,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4719,7 +4719,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4842,7 +4842,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -4965,7 +4965,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5088,7 +5088,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5211,7 +5211,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5334,7 +5334,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5457,7 +5457,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5580,7 +5580,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5703,7 +5703,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": true, "Optimize": true,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5824,7 +5824,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -5947,7 +5947,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6056,7 +6056,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6165,7 +6165,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6291,7 +6291,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6414,7 +6414,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6537,7 +6537,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6646,7 +6646,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6755,7 +6755,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6878,7 +6878,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -6993,7 +6993,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7102,7 +7102,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7211,7 +7211,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7320,7 +7320,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7429,7 +7429,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7538,7 +7538,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7647,7 +7647,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7756,7 +7756,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7865,7 +7865,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -7974,7 +7974,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8083,7 +8083,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8191,7 +8191,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8299,7 +8299,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8407,7 +8407,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8515,7 +8515,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8623,7 +8623,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8739,7 +8739,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8848,7 +8848,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -8957,7 +8957,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9066,7 +9066,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9175,7 +9175,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9284,7 +9284,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9393,7 +9393,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9502,7 +9502,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9611,7 +9611,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9727,7 +9727,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9836,7 +9836,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -9945,7 +9945,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,
@ -10054,7 +10054,7 @@
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 2, "PictureCropMode": 2,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,

View File

@ -1,6 +1,6 @@
<resources> <resources>
<section name="PresetTemplate"> <section name="PresetTemplate">
<integer name="VersionMajor" value="51" /> <integer name="VersionMajor" value="52" />
<integer name="VersionMinor" value="0" /> <integer name="VersionMinor" value="0" />
<integer name="VersionMicro" value="0" /> <integer name="VersionMicro" value="0" />
<json name="Preset" file="preset_template.json" /> <json name="Preset" file="preset_template.json" />

View File

@ -39,7 +39,7 @@
"FileFormat": "mp4", "FileFormat": "mp4",
"Folder": false, "Folder": false,
"FolderOpen": false, "FolderOpen": false,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureCropMode": 0, "PictureCropMode": 0,
"PictureBottomCrop": 0, "PictureBottomCrop": 0,

View File

@ -40,7 +40,7 @@
"FolderOpen": false, "FolderOpen": false,
"InlineParameterSets": false, "InlineParameterSets": false,
"MetadataPassthrough": true, "MetadataPassthrough": true,
"Mp4HttpOptimize": false, "Optimize": false,
"Mp4iPodCompatible": false, "Mp4iPodCompatible": false,
"PictureAllowUpscaling": false, "PictureAllowUpscaling": false,
"PictureUseMaximumSize": true, "PictureUseMaximumSize": true,

View File

@ -192,7 +192,7 @@ static char * preset_export_file = NULL;
static char * preset_name = NULL; static char * preset_name = NULL;
static char * queue_import_name = NULL; static char * queue_import_name = NULL;
static int cfr = -1; static int cfr = -1;
static int mp4_optimize = -1; static int optimize = -1;
static int ipod_atom = -1; static int ipod_atom = -1;
static int color_matrix_code = -1; static int color_matrix_code = -1;
static int preview_count = 10; static int preview_count = 10;
@ -1387,8 +1387,8 @@ static void ShowHelp(void)
" default: auto-detected from destination file name)\n" " default: auto-detected from destination file name)\n"
" -m, --markers Add chapter markers\n" " -m, --markers Add chapter markers\n"
" --no-markers Disable preset chapter markers\n" " --no-markers Disable preset chapter markers\n"
" -O, --optimize Optimize MP4 files for HTTP streaming (fast start,\n" " -O, --optimize Optimize files for HTTP streaming (fast start,\n"
" s.s. rewrite file to place MOOV atom at beginning)\n" " s.s. rewrite file to place MOOV atom or cues at beginning)\n"
" --no-optimize Disable preset 'optimize'\n" " --no-optimize Disable preset 'optimize'\n"
" -I, --ipod-atom Add iPod 5G compatibility atom to MP4 container\n" " -I, --ipod-atom Add iPod 5G compatibility atom to MP4 container\n"
" --no-ipod-atom Disable iPod 5G atom\n" " --no-ipod-atom Disable iPod 5G atom\n"
@ -2247,7 +2247,7 @@ static int ParseOptions( int argc, char ** argv )
{ "input", required_argument, NULL, 'i' }, { "input", required_argument, NULL, 'i' },
{ "output", required_argument, NULL, 'o' }, { "output", required_argument, NULL, 'o' },
{ "optimize", no_argument, NULL, 'O' }, { "optimize", no_argument, NULL, 'O' },
{ "no-optimize", no_argument, &mp4_optimize, 0 }, { "no-optimize", no_argument, &optimize, 0 },
{ "ipod-atom", no_argument, NULL, 'I' }, { "ipod-atom", no_argument, NULL, 'I' },
{ "no-ipod-atom",no_argument, &ipod_atom, 0 }, { "no-ipod-atom",no_argument, &ipod_atom, 0 },
@ -2527,7 +2527,7 @@ static int ParseOptions( int argc, char ** argv )
output = strdup( optarg ); output = strdup( optarg );
break; break;
case 'O': case 'O':
mp4_optimize = 1; optimize = 1;
break; break;
case 'I': case 'I':
ipod_atom = 1; ipod_atom = 1;
@ -3715,9 +3715,9 @@ static hb_dict_t * PreparePreset(const char *preset_name)
{ {
hb_dict_set(preset, "FileFormat", hb_value_string(format)); hb_dict_set(preset, "FileFormat", hb_value_string(format));
} }
if (mp4_optimize != -1) if (optimize != -1)
{ {
hb_dict_set(preset, "Mp4HttpOptimize", hb_value_bool(mp4_optimize)); hb_dict_set(preset, "Optimize", hb_value_bool(optimize));
} }
if (ipod_atom != -1) if (ipod_atom != -1)
{ {

View File

@ -37,9 +37,9 @@ namespace HandBrake.Interop.Interop.Json.Encode
public string File { get; set; } public string File { get; set; }
/// <summary> /// <summary>
/// Gets or sets the mp 4 options. /// Gets or sets the options.
/// </summary> /// </summary>
public Mp4Options Mp4Options { get; set; } public Options Options { get; set; }
/// <summary> /// <summary>
/// Gets or sets the mux. /// Gets or sets the mux.

View File

@ -1,5 +1,5 @@
// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------
// <copyright file="Mp4Options.cs" company="HandBrake Project (https://handbrake.fr)"> // <copyright file="Options.cs" company="HandBrake Project (https://handbrake.fr)">
// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
// </copyright> // </copyright>
// <summary> // <summary>
@ -10,9 +10,9 @@
namespace HandBrake.Interop.Interop.Json.Encode namespace HandBrake.Interop.Interop.Json.Encode
{ {
/// <summary> /// <summary>
/// The mp 4 options. /// The options.
/// </summary> /// </summary>
public class Mp4Options public class Options
{ {
/// <summary> /// <summary>
/// Gets or sets a value indicating whether ipod atom. /// Gets or sets a value indicating whether ipod atom.
@ -20,8 +20,8 @@ namespace HandBrake.Interop.Interop.Json.Encode
public bool IpodAtom { get; set; } public bool IpodAtom { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether mp 4 optimize. /// Gets or sets a value indicating whether optimize.
/// </summary> /// </summary>
public bool Mp4Optimize { get; set; } public bool Optimize { get; set; }
} }
} }

View File

@ -77,9 +77,9 @@ namespace HandBrake.Interop.Interop.Json.Presets
public bool FolderOpen { get; set; } public bool FolderOpen { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether mp 4 http optimize. /// Gets or sets a value indicating whether optimize.
/// </summary> /// </summary>
public bool Mp4HttpOptimize { get; set; } public bool Optimize { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether mp 4 i pod compatible. /// Gets or sets a value indicating whether mp 4 i pod compatible.

View File

@ -428,7 +428,7 @@ namespace HandBrakeWPF.Properties {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Optimize MP4 for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file.. /// Looks up a localized string similar to Optimize for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file..
/// </summary> /// </summary>
public static string MainView_Optimise { public static string MainView_Optimise {
get { get {

View File

@ -111,10 +111,10 @@ namespace HandBrakeWPF.Services.Encode.Factories
Destination destination = new Destination Destination destination = new Destination
{ {
File = job.Destination, File = job.Destination,
Mp4Options = new Mp4Options Options = new Options
{ {
IpodAtom = job.VideoEncoder.IsH264 ? job.IPod5GSupport : false, IpodAtom = job.VideoEncoder.IsH264 ? job.IPod5GSupport : false,
Mp4Optimize = job.OptimizeMP4 Optimize = job.Optimize
}, },
ChapterMarkers = job.IncludeChapterMarkers, ChapterMarkers = job.IncludeChapterMarkers,
AlignAVStart = job.AlignAVStart, AlignAVStart = job.AlignAVStart,

View File

@ -148,7 +148,7 @@ namespace HandBrakeWPF.Services.Encode.Model
/* Container */ /* Container */
this.IPod5GSupport = task.IPod5GSupport; this.IPod5GSupport = task.IPod5GSupport;
this.OutputFormat = task.OutputFormat; this.OutputFormat = task.OutputFormat;
this.OptimizeMP4 = task.OptimizeMP4; this.Optimize = task.Optimize;
this.AlignAVStart = task.AlignAVStart; this.AlignAVStart = task.AlignAVStart;
/* Other */ /* Other */
@ -177,7 +177,7 @@ namespace HandBrakeWPF.Services.Encode.Model
public OutputFormat OutputFormat { get; set; } public OutputFormat OutputFormat { get; set; }
public bool OptimizeMP4 { get; set; } public bool Optimize { get; set; }
public bool IPod5GSupport { get; set; } public bool IPod5GSupport { get; set; }

View File

@ -56,7 +56,7 @@ namespace HandBrakeWPF.Services.Presets.Factories
// Step 1, Create the EncodeTask Object that can be loaded into the UI. // Step 1, Create the EncodeTask Object that can be loaded into the UI.
/* Output Settings */ /* Output Settings */
preset.Task.OptimizeMP4 = importedPreset.Mp4HttpOptimize; preset.Task.Optimize = importedPreset.Optimize;
preset.Task.IPod5GSupport = importedPreset.Mp4iPodCompatible; preset.Task.IPod5GSupport = importedPreset.Mp4iPodCompatible;
preset.Task.OutputFormat = GetFileFormat(importedPreset.FileFormat.Replace("file", string.Empty).Trim()); preset.Task.OutputFormat = GetFileFormat(importedPreset.FileFormat.Replace("file", string.Empty).Trim());
preset.Task.AlignAVStart = importedPreset.AlignAVStart; preset.Task.AlignAVStart = importedPreset.AlignAVStart;
@ -541,7 +541,7 @@ namespace HandBrakeWPF.Services.Presets.Factories
// Output Settings // Output Settings
preset.FileFormat = EnumHelper<OutputFormat>.GetShortName(export.Task.OutputFormat); preset.FileFormat = EnumHelper<OutputFormat>.GetShortName(export.Task.OutputFormat);
preset.Mp4HttpOptimize = export.Task.OptimizeMP4; preset.Optimize = export.Task.Optimize;
preset.Mp4iPodCompatible = export.Task.IPod5GSupport; preset.Mp4iPodCompatible = export.Task.IPod5GSupport;
preset.AlignAVStart = export.Task.AlignAVStart; preset.AlignAVStart = export.Task.AlignAVStart;
preset.MetadataPassthrough = export.Task.MetaData?.PassthruMetadataEnabled ?? false; preset.MetadataPassthrough = export.Task.MetaData?.PassthruMetadataEnabled ?? false;

View File

@ -264,22 +264,22 @@ namespace HandBrakeWPF.ViewModels
} }
/// <summary> /// <summary>
/// Optimise MP4 Checkbox /// Optimise Checkbox
/// </summary> /// </summary>
public bool OptimizeMP4 public bool Optimize
{ {
get get
{ {
return this.Task?.OptimizeMP4 ?? false; return this.Task?.Optimize ?? false;
} }
set set
{ {
if (value == this.Task.OptimizeMP4) if (value == this.Task.Optimize)
{ {
return; return;
} }
this.Task.OptimizeMP4 = value; this.Task.Optimize = value;
this.NotifyOfPropertyChange(() => this.OptimizeMP4); this.NotifyOfPropertyChange(() => this.Optimize);
this.OnTabStatusChanged(null); this.OnTabStatusChanged(null);
} }
} }
@ -363,7 +363,7 @@ namespace HandBrakeWPF.ViewModels
this.NotifyOfPropertyChange(() => this.IsMkvOrWebm); this.NotifyOfPropertyChange(() => this.IsMkvOrWebm);
this.NotifyOfPropertyChange(() => this.IsIpodAtomVisible); this.NotifyOfPropertyChange(() => this.IsIpodAtomVisible);
this.NotifyOfPropertyChange(() => this.OptimizeMP4); this.NotifyOfPropertyChange(() => this.Optimize);
this.NotifyOfPropertyChange(() => this.IPod5GSupport); this.NotifyOfPropertyChange(() => this.IPod5GSupport);
this.NotifyOfPropertyChange(() => this.AlignAVStart); this.NotifyOfPropertyChange(() => this.AlignAVStart);
this.NotifyOfPropertyChange(() => this.MetadataPassthru); this.NotifyOfPropertyChange(() => this.MetadataPassthru);
@ -376,7 +376,7 @@ namespace HandBrakeWPF.ViewModels
return false; return false;
} }
if (preset.Task.OptimizeMP4 != this.OptimizeMP4) if (preset.Task.Optimize != this.Optimize)
{ {
return false; return false;
} }
@ -478,7 +478,7 @@ namespace HandBrakeWPF.ViewModels
{ {
// Main Window Settings // Main Window Settings
this.SelectedOutputFormat = selectedPreset.Task.OutputFormat; this.SelectedOutputFormat = selectedPreset.Task.OutputFormat;
this.OptimizeMP4 = selectedPreset.Task.OptimizeMP4; this.Optimize = selectedPreset.Task.Optimize;
this.IPod5GSupport = selectedPreset.Task.IPod5GSupport; this.IPod5GSupport = selectedPreset.Task.IPod5GSupport;
this.AlignAVStart = selectedPreset.Task.AlignAVStart; this.AlignAVStart = selectedPreset.Task.AlignAVStart;
this.MetadataPassthru = selectedPreset.Task?.MetaData.PassthruMetadataEnabled ?? false; this.MetadataPassthru = selectedPreset.Task?.MetaData.PassthruMetadataEnabled ?? false;
@ -503,7 +503,6 @@ namespace HandBrakeWPF.ViewModels
// Now disable controls that are not required. The Following are for MP4 only! // Now disable controls that are not required. The Following are for MP4 only!
if (newExtension == ".mkv" || newExtension == ".webm") if (newExtension == ".mkv" || newExtension == ".webm")
{ {
this.OptimizeMP4 = false;
this.IPod5GSupport = false; this.IPod5GSupport = false;
this.AlignAVStart = false; this.AlignAVStart = false;
} }

View File

@ -61,7 +61,7 @@
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="1"> <StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="1">
<CheckBox Name="WebOptimized" VerticalAlignment="Center" HorizontalAlignment="Left" <CheckBox Name="WebOptimized" VerticalAlignment="Center" HorizontalAlignment="Left"
Content="{x:Static Properties:Resources.MainView_WebOptimized}" Content="{x:Static Properties:Resources.MainView_WebOptimized}"
IsChecked="{Binding Path=OptimizeMP4}" IsChecked="{Binding Path=Optimize}"
ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Optimise}" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Optimise}"
Visibility="{Binding IsMkvOrWebm, Converter={StaticResource boolToVisConverter}, ConverterParameter=true}" /> Visibility="{Binding IsMkvOrWebm, Converter={StaticResource boolToVisConverter}, ConverterParameter=true}" />
<CheckBox Name="AlignAVStart" VerticalAlignment="Center" HorizontalAlignment="Left" <CheckBox Name="AlignAVStart" VerticalAlignment="Center" HorizontalAlignment="Left"