<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>165214</bug_id>
          
          <creation_ts>2016-11-30 12:55:14 -0800</creation_ts>
          <short_desc>[MediaStream][Mac] Video presets sometimes don&apos;t work</short_desc>
          <delta_ts>2016-12-01 11:27:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1254906</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-11-30 12:55:14 -0800</bug_when>
    <thetext>Applying an AVCapture preset sometimes don&apos;t change the size of the capture stream. Use AVCaptureVideoDataOutput videoSettings to work around this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254908</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-30 12:56:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/29444533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255256</commentid>
    <comment_count>2</comment_count>
      <attachid>295852</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-01 08:20:15 -0800</bug_when>
    <thetext>Created attachment 295852
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255274</commentid>
    <comment_count>3</comment_count>
      <attachid>295852</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-12-01 10:09:18 -0800</bug_when>
    <thetext>Comment on attachment 295852
Proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=295852&amp;action=review

r=me with nits.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h:68
&gt; +    IntSize sizeForPreset(NSString*);

No need for this to be a class instance method; it could easily be a static method in the .mm file.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:324
&gt; +        RetainPtr&lt;NSDictionary&gt; settingsDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:size.width()], kCVPixelBufferWidthKey, [NSNumber numberWithInt:size.height()], kCVPixelBufferHeightKey, [NSNumber numberWithInt:videoCaptureFormat], kCVPixelBufferPixelFormatTypeKey, nil]);

This could be:

auto settingsDictionary = @{
  (NSString*)kCVPixelBufferPixelFormatTypeKey: @(videoCaptureFormat),
  (NSString*)kCVPixelBufferWidthKey: @(size.width()),
  (NSString*)kCVPixelBufferHeightKey: @(size.height()),
};

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:401
&gt; +    auto settingsDictionary = adoptNS([[NSMutableDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:videoCaptureFormat], kCVPixelBufferPixelFormatTypeKey, nil]);
&gt; +    if (m_pendingPreset) {
&gt; +#if PLATFORM(MAC)
&gt; +        auto size = sizeForPreset(m_pendingPreset.get());
&gt; +        [settingsDictionary.get() setObject:[NSNumber numberWithInt:size.width()] forKey:(NSString*)kCVPixelBufferWidthKey];
&gt; +        [settingsDictionary.get() setObject:[NSNumber numberWithInt:size.height()] forKey:(NSString*)kCVPixelBufferHeightKey];
&gt; +#endif
&gt; +    }

This could be:

auto size = sizeForPreset(m_pendingPreset.get())
auto settingsDictionary = @{
  (NSString*)kCVPixelBufferPixelFormatTypeKey: @(videoCaptureFormat),
#if PLATFORM(MAC)
  (NSString*)kCVPixelBufferWidthKey: @(size.width()),
  (NSString*)kCVPixelBufferHeightKey: @(size.height()),
#endif
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255283</commentid>
    <comment_count>4</comment_count>
      <attachid>295852</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-01 10:22:55 -0800</bug_when>
    <thetext>Comment on attachment 295852
Proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=295852&amp;action=review

Thanks for the review!

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h:68
&gt;&gt; +    IntSize sizeForPreset(NSString*);
&gt; 
&gt; No need for this to be a class instance method; it could easily be a static method in the .mm file.

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:324
&gt;&gt; +        RetainPtr&lt;NSDictionary&gt; settingsDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:size.width()], kCVPixelBufferWidthKey, [NSNumber numberWithInt:size.height()], kCVPixelBufferHeightKey, [NSNumber numberWithInt:videoCaptureFormat], kCVPixelBufferPixelFormatTypeKey, nil]);
&gt; 
&gt; This could be:
&gt; 
&gt; auto settingsDictionary = @{
&gt;   (NSString*)kCVPixelBufferPixelFormatTypeKey: @(videoCaptureFormat),
&gt;   (NSString*)kCVPixelBufferWidthKey: @(size.width()),
&gt;   (NSString*)kCVPixelBufferHeightKey: @(size.height()),
&gt; };

Good idea, fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:401
&gt;&gt; +    }
&gt; 
&gt; This could be:
&gt; 
&gt; auto size = sizeForPreset(m_pendingPreset.get())
&gt; auto settingsDictionary = @{
&gt;   (NSString*)kCVPixelBufferPixelFormatTypeKey: @(videoCaptureFormat),
&gt; #if PLATFORM(MAC)
&gt;   (NSString*)kCVPixelBufferWidthKey: @(size.width()),
&gt;   (NSString*)kCVPixelBufferHeightKey: @(size.height()),
&gt; #endif
&gt; };

That doesn&apos;t work because we can&apos;t set the width and height attributes unless m_pendingPreset is non-NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255306</commentid>
    <comment_count>5</comment_count>
      <attachid>295865</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-01 10:50:00 -0800</bug_when>
    <thetext>Created attachment 295865
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255309</commentid>
    <comment_count>6</comment_count>
      <attachid>295865</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-01 10:51:43 -0800</bug_when>
    <thetext>Comment on attachment 295865
Patch for landing.

Rejecting attachment 295865 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 295865, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2602220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255315</commentid>
    <comment_count>7</comment_count>
      <attachid>295869</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-01 11:02:36 -0800</bug_when>
    <thetext>Created attachment 295869
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255324</commentid>
    <comment_count>8</comment_count>
      <attachid>295869</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-01 11:27:46 -0800</bug_when>
    <thetext>Comment on attachment 295869
Patch for landing.

Clearing flags on attachment: 295869

Committed r209188: &lt;http://trac.webkit.org/changeset/209188&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295852</attachid>
            <date>2016-12-01 08:20:15 -0800</date>
            <delta_ts>2016-12-01 10:09:18 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>video_preset_mac_patch_2.txt</filename>
            <type>text/plain</type>
            <size>7011</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBWaWRlbyBwcmVzZXRzIHNvbWV0aW1lcyBkb24ndCB3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMTQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI5NDQ0NTMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFByZXNl
dCk6IFNldCB2aWRlb1NldHRpbmdzIHdpZHRoIGFuZCBoZWlnaHQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6IFN0b3JlIHZpZGVv
U2V0dGluZ3Mgb2JqZWN0IGZvciBsYXRlciB1c2UuCisgICAgICAgICAgU2V0IHZpZGVvU2V0dGlu
Z3Mgd2lkdGggYW5kIGhlaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2l6ZUZvclByZXNldCk6IE5ldy4KKwogMjAxNi0x
MS0yOCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbY3NzLWdyaWRdIE1vdmUgbW9yZSBhdHRyaWJ1dGVzIGZyb20gUmVuZGVyR3JpZCB0byB0aGUg
bmV3IEdyaWQgY2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lv
biAyMDkxMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7CiAKICAgICBOU1N0cmluZyAqYmVz
dFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdDsKKyAgICBJbnRTaXplIHNpemVGb3JQ
cmVzZXQoTlNTdHJpbmcqKTsKICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6
Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPikgZmluYWw7CiAKICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIGZpbmFsOwpAQCAtODYsNiArODcsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJlc2V0OwogICAg
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFP
dXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAKICAgICBWZWN0b3I8RmxvYXQ2ND4gbV92aWRlb0ZyYW1l
VGltZVN0YW1wczsKICAgICBGbG9hdDY0IG1fZnJhbWVSYXRlIHsgMCB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjA5MTM2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTMsMTIgKzMxMywxNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRQcmVzZXQoTlNTCiAgICAgICAgIG1fcGVuZGluZ1ByZXNldCA9IHByZXNldDsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG1fcGVuZGluZ1ByZXNldCA9IG51bGxwdHI7Ci0g
ICAgaWYgKCFwcmVzZXQpCisKKyAgICBhdXRvIHNpemUgPSBzaXplRm9yUHJlc2V0KHByZXNldCk7
CisgICAgaWYgKHNpemUud2lkdGgoKSA9PSBtX3dpZHRoICYmIHNpemUuaGVpZ2h0KCkgPT0gbV9o
ZWlnaHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgQHRyeSB7CiAgICAgICAgIHNlc3Np
b24oKS5zZXNzaW9uUHJlc2V0ID0gcHJlc2V0OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05T
RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czogW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6c2l6ZS53aWR0aCgpXSwga0NWUGl4ZWxCdWZmZXJXaWR0aEtleSwgW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6c2l6ZS5oZWlnaHQoKV0sIGtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5LCBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDp2aWRlb0NhcHR1cmVGb3JtYXRdLCBrQ1ZQaXhlbEJ1ZmZl
clBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7CisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHNldFZp
ZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpXTsKKyNlbmRpZgogICAgIH0gQGNh
dGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZSglcCksIGV4Y2VwdGlvbiB0aHJvd24gY29uZmlndXJp
bmcgZGV2aWNlOiA8JXM+ICVzIiwgdGhpcywgW1tleGNlcHRpb24gbmFtZV0gVVRGOFN0cmluZ10s
IFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNzIsOSArMzc3LDYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXpl
QW5kRgogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkK
IHsKLSAgICBpZiAobV9wZW5kaW5nUHJlc2V0KQotICAgICAgICBzZXRQcmVzZXQobV9wZW5kaW5n
UHJlc2V0LmdldCgpKTsKLQogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgIFJldGFpblB0
cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU+IHZpZGVvSW4gPSBhZG9wdE5TKFthbGxvY0FWQ2Fw
dHVyZURldmljZUlucHV0SW5zdGFuY2UoKSBpbml0V2l0aERldmljZTpkZXZpY2UoKSBlcnJvcjom
ZXJyb3JdKTsKICAgICBpZiAoZXJyb3IpIHsKQEAgLTM4OCwxNyArMzkwLDMwIEBAIHZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVMKICAgICB9CiAgICAgW3Nlc3Npb24oKSBh
ZGRJbnB1dDp2aWRlb0luLmdldCgpXTsKIAotICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0Rh
dGFPdXRwdXRUeXBlPiB2aWRlb091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlVmlkZW9E
YXRhT3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
c2V0dGluZ3NEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6dmlkZW9DYXB0dXJlRm9y
bWF0XSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIG5pbF0pOwotICAgIFt2aWRl
b091dHB1dCBzZXRWaWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeS5nZXQoKV07Ci0gICAg
W3ZpZGVvT3V0cHV0IHNldEFsd2F5c0Rpc2NhcmRzTGF0ZVZpZGVvRnJhbWVzOllFU107Ci0gICAg
c2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZSh2aWRlb091dHB1dC5nZXQoKSk7CisgICAgbV92
aWRlb091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0SW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgYXV0byBzZXR0aW5nc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czogW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6dmlkZW9DYXB0dXJlRm9ybWF0XSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXksIG5pbF0pOworICAgIGlmIChtX3BlbmRpbmdQcmVzZXQpIHsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgICAgIGF1dG8gc2l6ZSA9IHNpemVGb3JQcmVzZXQobV9wZW5kaW5nUHJl
c2V0LmdldCgpKTsKKyAgICAgICAgW3NldHRpbmdzRGljdGlvbmFyeS5nZXQoKSBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c2l6ZS53aWR0aCgpXSBmb3JLZXk6KE5TU3RyaW5nKilr
Q1ZQaXhlbEJ1ZmZlcldpZHRoS2V5XTsKKyAgICAgICAgW3NldHRpbmdzRGljdGlvbmFyeS5nZXQo
KSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c2l6ZS5oZWlnaHQoKV0gZm9yS2V5
OihOU1N0cmluZyopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXldOworI2VuZGlmCisgICAgfQorCisg
ICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0
KCldOworICAgIFttX3ZpZGVvT3V0cHV0IHNldEFsd2F5c0Rpc2NhcmRzTGF0ZVZpZGVvRnJhbWVz
OllFU107CisgICAgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShtX3ZpZGVvT3V0cHV0Lmdl
dCgpKTsKIAotICAgIGlmICghW3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6dmlkZW9PdXRwdXQuZ2V0
KCldKSB7CisgICAgaWYgKCFbc2Vzc2lvbigpIGNhbkFkZE91dHB1dDptX3ZpZGVvT3V0cHV0Lmdl
dCgpXSkgewogICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBD
YXB0dXJlU2Vzc2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gc2FtcGxlIGJ1ZmZlciBvdXRw
dXQgZGVsZWdhdGUiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbc2Vzc2lv
bigpIGFkZE91dHB1dDp2aWRlb091dHB1dC5nZXQoKV07CisgICAgW3Nlc3Npb24oKSBhZGRPdXRw
dXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc2V0UHJl
c2V0KG1fcGVuZGluZ1ByZXNldC5nZXQoKSk7CisjZW5kaWYKKwogfQogCiB2b2lkIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkKQEAgLTU0MSw3ICs1NTYsNyBA
QCBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9DYXB0CiAgICAgcmV0dXJuIEFW
VmlkZW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUoc2Vzc2lvbigpLCBkZXZpY2UoKSwgdGhpcyk7CiB9
CiAKLU5TU3RyaW5nICpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNlc3Npb25QcmVzZXRGb3JW
aWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGlu
dD4gaGVpZ2h0KSBjb25zdAorTlNTdHJpbmcqIEFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vz
c2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0
ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVp
Z2h0KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNTY1LDYgKzU4MCwzMCBAQCBOU1N0cmluZyAq
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorSW50
U2l6ZSBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2l6ZUZvclByZXNldChOU1N0cmluZyogcHJlc2V0
KQoreworICAgIGlmICghcHJlc2V0KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKFtw
cmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMF0pCisg
ICAgICAgIHJldHVybiB7IDEyODAsIDcyMCB9OworCisgICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRv
U3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ5NjB4NTQwXSkKKyAgICAgICAgcmV0dXJuIHsg
OTYwLCA1NDAgfTsKKworICAgIGlmIChbcHJlc2V0IGlzRXF1YWxUb1N0cmluZzpBVkNhcHR1cmVT
ZXNzaW9uUHJlc2V0NjQweDQ4MF0pCisgICAgICAgIHJldHVybiB7IDY0MCwgNDgwIH07CisKKyAg
ICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDM1Mngy
ODhdKQorICAgICAgICByZXR1cm4geyAzNTIsIDI4OCB9OworCisgICAgaWYgKFtwcmVzZXQgaXNF
cXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwXSkKKyAgICAgICAgcmV0
dXJuIHsgMzIwLCAyNDAgfTsKKworICAgIHJldHVybiB7IH07CisKK30KKwogYm9vbCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGZyYW1lUmF0ZSkKIHsKICAgICBpZiAoIWhlaWdodCAmJiAhd2lkdGggJiYgIWZyYW1lUmF0ZSkK
</data>
<flag name="review"
          id="318380"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295865</attachid>
            <date>2016-12-01 10:50:00 -0800</date>
            <delta_ts>2016-12-01 11:02:36 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>video_preset_mac_patch_3.txt</filename>
            <type>text/plain</type>
            <size>6336</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBWaWRlbyBwcmVzZXRzIHNvbWV0aW1lcyBkb24ndCB3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMTQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI5NDQ0NTMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFByZXNl
dCk6IFNldCB2aWRlb1NldHRpbmdzIHdpZHRoIGFuZCBoZWlnaHQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6IFN0b3JlIHZpZGVv
U2V0dGluZ3Mgb2JqZWN0IGZvciBsYXRlciB1c2UuCisgICAgICAgICAgU2V0IHZpZGVvU2V0dGlu
Z3Mgd2lkdGggYW5kIGhlaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2l6ZUZvclByZXNldCk6IE5ldy4KKwogMjAxNi0x
MS0yOCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbY3NzLWdyaWRdIE1vdmUgbW9yZSBhdHRyaWJ1dGVzIGZyb20gUmVuZGVyR3JpZCB0byB0aGUg
bmV3IEdyaWQgY2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lv
biAyMDkxMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJlc2V0OwogICAgIFJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1fbGFzdEltYWdlOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ+
IG1fdmlkZW9PdXRwdXQ7CiAKICAgICBWZWN0b3I8RmxvYXQ2ND4gbV92aWRlb0ZyYW1lVGltZVN0
YW1wczsKICAgICBGbG9hdDY0IG1fZnJhbWVSYXRlIHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjA5MTM2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDcsMTggKzMwNyw0NyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBs
eVNpemUoY29uCiAgICAgcmV0dXJuIHNldFByZXNldChwcmVzZXQpOwogfQogCitzdGF0aWMgSW50
U2l6ZSBzaXplRm9yUHJlc2V0KE5TU3RyaW5nKiBwcmVzZXQpCit7CisgICAgaWYgKCFwcmVzZXQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6
QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwXSkKKyAgICAgICAgcmV0dXJuIHsgMTI4MCwg
NzIwIH07CisKKyAgICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lv
blByZXNldDk2MHg1NDBdKQorICAgICAgICByZXR1cm4geyA5NjAsIDU0MCB9OworCisgICAgaWYg
KFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSkK
KyAgICAgICAgcmV0dXJuIHsgNjQwLCA0ODAgfTsKKworICAgIGlmIChbcHJlc2V0IGlzRXF1YWxU
b1N0cmluZzpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OF0pCisgICAgICAgIHJldHVybiB7
IDM1MiwgMjg4IH07CisKKyAgICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJl
U2Vzc2lvblByZXNldDMyMHgyNDBdKQorICAgICAgICByZXR1cm4geyAzMjAsIDI0MCB9OworICAg
IAorICAgIHJldHVybiB7IH07CisgICAgCit9CisKIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OnNldFByZXNldChOU1N0cmluZyAqcHJlc2V0KQogewogICAgIGlmICghc2Vzc2lvbigpKSB7CiAg
ICAgICAgIG1fcGVuZGluZ1ByZXNldCA9IHByZXNldDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotICAgIG1fcGVuZGluZ1ByZXNldCA9IG51bGxwdHI7Ci0gICAgaWYgKCFwcmVzZXQpCisK
KyAgICBhdXRvIHNpemUgPSBzaXplRm9yUHJlc2V0KHByZXNldCk7CisgICAgaWYgKHNpemUud2lk
dGgoKSA9PSBtX3dpZHRoICYmIHNpemUuaGVpZ2h0KCkgPT0gbV9oZWlnaHQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgQHRyeSB7CiAgICAgICAgIHNlc3Npb24oKS5zZXNzaW9uUHJlc2V0
ID0gcHJlc2V0OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0byBzZXR0aW5nc0RpY3Rp
b25hcnkgPSBAeyAoTlNTdHJpbmcqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBA
KHZpZGVvQ2FwdHVyZUZvcm1hdCksIChOU1N0cmluZyopa0NWUGl4ZWxCdWZmZXJXaWR0aEtleTog
QChzaXplLndpZHRoKCkpLCAoTlNTdHJpbmcqKWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5OiBAKHNp
emUuaGVpZ2h0KCkpLCB9OworICAgICAgICBbbV92aWRlb091dHB1dCBzZXRWaWRlb1NldHRpbmdz
OnNldHRpbmdzRGljdGlvbmFyeV07CisjZW5kaWYKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjph
cHBseVNpemUoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAl
cyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFz
b25dIFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzcyLDkgKzQwMSw2
IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEYKIAogdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiB7Ci0gICAgaWYgKG1fcGVu
ZGluZ1ByZXNldCkKLSAgICAgICAgc2V0UHJlc2V0KG1fcGVuZGluZ1ByZXNldC5nZXQoKSk7Ci0K
ICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNl
SW5wdXRUeXBlPiB2aWRlb0luID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVEZXZpY2VJbnB1dElu
c3RhbmNlKCkgaW5pdFdpdGhEZXZpY2U6ZGV2aWNlKCkgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYg
KGVycm9yKSB7CkBAIC0zODgsMTcgKzQxNCwzMCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR1cENhcHR1cmVTCiAgICAgfQogICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5n
ZXQoKV07CiAKLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0VHlwZT4gdmlk
ZW9PdXRwdXQgPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dEluc3RhbmNl
KCkgaW5pdF0pOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHNldHRpbmdzRGljdGlvbmFy
eSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnZpZGVvQ2FwdHVyZUZvcm1hdF0sIGtDVlBpeGVsQnVm
ZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdKTsKLSAgICBbdmlkZW9PdXRwdXQgc2V0VmlkZW9T
ZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCldOwotICAgIFt2aWRlb091dHB1dCBzZXRB
bHdheXNEaXNjYXJkc0xhdGVWaWRlb0ZyYW1lczpZRVNdOwotICAgIHNldFZpZGVvU2FtcGxlQnVm
ZmVyRGVsZWdhdGUodmlkZW9PdXRwdXQuZ2V0KCkpOworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9w
dE5TKFthbGxvY0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdF0pOworICAg
IGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OnZp
ZGVvQ2FwdHVyZUZvcm1hdF0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxd
KTsKKyAgICBpZiAobV9wZW5kaW5nUHJlc2V0KSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICBhdXRvIHNpemUgPSBzaXplRm9yUHJlc2V0KG1fcGVuZGluZ1ByZXNldC5nZXQoKSk7CisgICAg
ICAgIFtzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoSW50OnNpemUud2lkdGgoKV0gZm9yS2V5OihOU1N0cmluZyopa0NWUGl4ZWxCdWZmZXJXaWR0
aEtleV07CisgICAgICAgIFtzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCkgc2V0T2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoSW50OnNpemUuaGVpZ2h0KCldIGZvcktleTooTlNTdHJpbmcqKWtDVlBp
eGVsQnVmZmVySGVpZ2h0S2V5XTsKKyNlbmRpZgorICAgIH0KKworICAgIFttX3ZpZGVvT3V0cHV0
IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpXTsKKyAgICBbbV92aWRl
b091dHB1dCBzZXRBbHdheXNEaXNjYXJkc0xhdGVWaWRlb0ZyYW1lczpZRVNdOworICAgIHNldFZp
ZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUobV92aWRlb091dHB1dC5nZXQoKSk7CiAKLSAgICBpZiAo
IVtzZXNzaW9uKCkgY2FuQWRkT3V0cHV0OnZpZGVvT3V0cHV0LmdldCgpXSkgeworICAgIGlmICgh
W3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV0pIHsKICAgICAgICAg
TE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oJXAp
LCB1bmFibGUgdG8gYWRkIHZpZGVvIHNhbXBsZSBidWZmZXIgb3V0cHV0IGRlbGVnYXRlIiwgdGhp
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgW3Nlc3Npb24oKSBhZGRPdXRwdXQ6dmlk
ZW9PdXRwdXQuZ2V0KCldOworICAgIFtzZXNzaW9uKCkgYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQu
Z2V0KCldOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHNldFByZXNldChtX3BlbmRpbmdQcmVz
ZXQuZ2V0KCkpOworI2VuZGlmCisKIH0KIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2h1
dGRvd25DYXB0dXJlU2Vzc2lvbigpCkBAIC01NDEsNyArNTgwLDcgQEAgUmVmUHRyPEFWTWVkaWFT
b3VyY2VQcmV2aWV3PiBBVlZpZGVvQ2FwdAogICAgIHJldHVybiBBVlZpZGVvU291cmNlUHJldmll
dzo6Y3JlYXRlKHNlc3Npb24oKSwgZGV2aWNlKCksIHRoaXMpOwogfQogCi1OU1N0cmluZyAqQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHN0
ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCkgY29uc3QK
K05TU3RyaW5nKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRl
b0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4g
aGVpZ2h0KSBjb25zdAogewogICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkKICAgICAgICAgcmV0
dXJuIG5pbDsK
</data>
<flag name="commit-queue"
          id="318388"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295869</attachid>
            <date>2016-12-01 11:02:36 -0800</date>
            <delta_ts>2016-12-01 11:27:46 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>video_preset_mac_patch_3.txt</filename>
            <type>text/plain</type>
            <size>6331</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBWaWRlbyBwcmVzZXRzIHNvbWV0aW1lcyBkb24ndCB3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMTQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI5NDQ0NTMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOiBT
ZXQgdmlkZW9TZXR0aW5ncyB3aWR0aCBhbmQgaGVpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24pOiBTdG9yZSB2aWRlb1NldHRp
bmdzIG9iamVjdCBmb3IgbGF0ZXIgdXNlLgorICAgICAgICAgIFNldCB2aWRlb1NldHRpbmdzIHdp
ZHRoIGFuZCBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNpemVGb3JQcmVzZXQpOiBOZXcuCisKIDIwMTYtMTEtMjgg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nz
cy1ncmlkXSBNb3ZlIG1vcmUgYXR0cmlidXRlcyBmcm9tIFJlbmRlckdyaWQgdG8gdGhlIG5ldyBH
cmlkIGNsYXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjA5
MTM2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fcGVuZGluZ1ByZXNldDsKICAgICBSZXRhaW5QdHI8
Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBt
X2xhc3RJbWFnZTsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3Zp
ZGVvT3V0cHV0OwogCiAgICAgVmVjdG9yPEZsb2F0NjQ+IG1fdmlkZW9GcmFtZVRpbWVTdGFtcHM7
CiAgICAgRmxvYXQ2NCBtX2ZyYW1lUmF0ZSB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzA3LDE4ICszMDcsNDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXpl
KGNvbgogICAgIHJldHVybiBzZXRQcmVzZXQocHJlc2V0KTsKIH0KIAorc3RhdGljIEludFNpemUg
c2l6ZUZvclByZXNldChOU1N0cmluZyogcHJlc2V0KQoreworICAgIGlmICghcHJlc2V0KQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2Fw
dHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMF0pCisgICAgICAgIHJldHVybiB7IDEyODAsIDcyMCB9
OworCisgICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVz
ZXQ5NjB4NTQwXSkKKyAgICAgICAgcmV0dXJuIHsgOTYwLCA1NDAgfTsKKworICAgIGlmIChbcHJl
c2V0IGlzRXF1YWxUb1N0cmluZzpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0NjQweDQ4MF0pCisgICAg
ICAgIHJldHVybiB7IDY0MCwgNDgwIH07CisKKyAgICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJp
bmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODhdKQorICAgICAgICByZXR1cm4geyAzNTIs
IDI4OCB9OworCisgICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Np
b25QcmVzZXQzMjB4MjQwXSkKKyAgICAgICAgcmV0dXJuIHsgMzIwLCAyNDAgfTsKKyAgICAKKyAg
ICByZXR1cm4geyB9OworICAgIAorfQorCiBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQ
cmVzZXQoTlNTdHJpbmcgKnByZXNldCkKIHsKICAgICBpZiAoIXNlc3Npb24oKSkgewogICAgICAg
ICBtX3BlbmRpbmdQcmVzZXQgPSBwcmVzZXQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBtX3BlbmRpbmdQcmVzZXQgPSBudWxscHRyOwotICAgIGlmICghcHJlc2V0KQorCisgICAg
YXV0byBzaXplID0gc2l6ZUZvclByZXNldChwcmVzZXQpOworICAgIGlmIChzaXplLndpZHRoKCkg
PT0gbV93aWR0aCAmJiBzaXplLmhlaWdodCgpID09IG1faGVpZ2h0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIEB0cnkgewogICAgICAgICBzZXNzaW9uKCkuc2Vzc2lvblByZXNldCA9IHBy
ZXNldDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5
ID0gQHsgKE5TU3RyaW5nKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRl
b0NhcHR1cmVGb3JtYXQpLCAoTlNTdHJpbmcqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAoc2l6
ZS53aWR0aCgpKSwgKE5TU3RyaW5nKilrQ1ZQaXhlbEJ1ZmZlckhlaWdodEtleTogQChzaXplLmhl
aWdodCgpKSwgfTsKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0
aW5nc0RpY3Rpb25hcnldOworI2VuZGlmCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewogICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlT
aXplKCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0
aGlzLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBV
VEY4U3RyaW5nXSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Miw5ICs0MDEsNiBAQCB2
b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemVBbmRGCiAKIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotICAgIGlmIChtX3BlbmRpbmdQ
cmVzZXQpCi0gICAgICAgIHNldFByZXNldChtX3BlbmRpbmdQcmVzZXQuZ2V0KCkpOwotCiAgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZUlucHV0
VHlwZT4gdmlkZW9JbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlRGV2aWNlSW5wdXRJbnN0YW5j
ZSgpIGluaXRXaXRoRGV2aWNlOmRldmljZSgpIGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJv
cikgewpAQCAtMzg4LDE3ICs0MTQsMzAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dXBDYXB0dXJlUwogICAgIH0KICAgICBbc2Vzc2lvbigpIGFkZElucHV0OnZpZGVvSW4uZ2V0KCld
OwogCi0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU+IHZpZGVvT3V0
cHV0ID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRJbnN0YW5jZSgpIGlu
aXRdKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBzZXR0aW5nc0RpY3Rpb25hcnkgPSBh
ZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDp2aWRlb0NhcHR1cmVGb3JtYXRdLCBrQ1ZQaXhlbEJ1ZmZlclBp
eGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7Ci0gICAgW3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGlu
Z3M6c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpXTsKLSAgICBbdmlkZW9PdXRwdXQgc2V0QWx3YXlz
RGlzY2FyZHNMYXRlVmlkZW9GcmFtZXM6WUVTXTsKLSAgICBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRl
bGVnYXRlKHZpZGVvT3V0cHV0LmdldCgpKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhb
YWxsb2NBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRv
IHNldHRpbmdzRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp2aWRlb0Nh
cHR1cmVGb3JtYXRdLCBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgbmlsXSk7Cisg
ICAgaWYgKG1fcGVuZGluZ1ByZXNldCkgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0
byBzaXplID0gc2l6ZUZvclByZXNldChtX3BlbmRpbmdQcmVzZXQuZ2V0KCkpOworICAgICAgICBb
c2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpzaXplLndpZHRoKCldIGZvcktleTooTlNTdHJpbmcqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXld
OworICAgICAgICBbc2V0dGluZ3NEaWN0aW9uYXJ5LmdldCgpIHNldE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpzaXplLmhlaWdodCgpXSBmb3JLZXk6KE5TU3RyaW5nKilrQ1ZQaXhlbEJ1
ZmZlckhlaWdodEtleV07CisjZW5kaWYKKyAgICB9CisKKyAgICBbbV92aWRlb091dHB1dCBzZXRW
aWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeS5nZXQoKV07CisgICAgW21fdmlkZW9PdXRw
dXQgc2V0QWx3YXlzRGlzY2FyZHNMYXRlVmlkZW9GcmFtZXM6WUVTXTsKKyAgICBzZXRWaWRlb1Nh
bXBsZUJ1ZmZlckRlbGVnYXRlKG1fdmlkZW9PdXRwdXQuZ2V0KCkpOwogCi0gICAgaWYgKCFbc2Vz
c2lvbigpIGNhbkFkZE91dHB1dDp2aWRlb091dHB1dC5nZXQoKV0pIHsKKyAgICBpZiAoIVtzZXNz
aW9uKCkgY2FuQWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldKSB7CiAgICAgICAgIExPRyhN
ZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCVwKSwgdW5h
YmxlIHRvIGFkZCB2aWRlbyBzYW1wbGUgYnVmZmVyIG91dHB1dCBkZWxlZ2F0ZSIsIHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFtzZXNzaW9uKCkgYWRkT3V0cHV0OnZpZGVvT3V0
cHV0LmdldCgpXTsKKyAgICBbc2Vzc2lvbigpIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgp
XTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzZXRQcmVzZXQobV9wZW5kaW5nUHJlc2V0Lmdl
dCgpKTsKKyNlbmRpZgorCiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNodXRkb3du
Q2FwdHVyZVNlc3Npb24oKQpAQCAtNTQxLDcgKzU4MCw3IEBAIFJlZlB0cjxBVk1lZGlhU291cmNl
UHJldmlldz4gQVZWaWRlb0NhcHQKICAgICByZXR1cm4gQVZWaWRlb1NvdXJjZVByZXZpZXc6OmNy
ZWF0ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlzKTsKIH0KIAotTlNTdHJpbmcgKkFWVmlkZW9D
YXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpIGNvbnN0CitOU1N0
cmluZyogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCkgY29uc3QKIHsKICAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBu
aWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>