3
votes

AVFoundation enregistre une vidéo HDR 10 bits sur iPhone 12

L'iPhone 12/12 pro prend en charge l'enregistrement vidéo Dolby Vision HDR au format 10 bits au lieu de 8 bits, mais il n'est pas clair à partir du SDK iOS 14.1 si AVCaptureVideoDataOutput prend en charge la livraison de tampons d'échantillons 10 bits qui peuvent être ajoutés au fichier vidéo à l'aide d'AVAssetWriter. Quelqu'un a-t-il compris si c'est possible ou non dans le SDK?

EDIT: Un certain nombre d'applications telles que l'application Clips d'Apple ont commencé à prendre en charge l'enregistrement vidéo Dolby Vision 10 bits. Mais j'ai essayé toutes les API disponibles, y compris videoHDREnabled, mais cela ne fonctionne pas. La question claire est donc de savoir comment enregistrer une vidéo HDR (Dolby vision) à l'aide des API AVFoundation?

EDIT2: J'ai pu comprendre les formats de périphérique qui prennent en charge les formats de tampon de pixels 10 bits (qui est «x420», PAS ceux avec 420v ou 420f comme sous-type de média). Sur l' iPhone 12 mini, 4 formats de périphériques prennent en charge la livraison de tampon de pixel de 10 bits dans kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange, même si la documentation AVFoundation dit que ce n'est pas un format de pixel pris en charge (citant -. "Sur iOS, la clé pris en charge est kCVPixelBufferPixelFormatTypeKey formats de pixels pris en charge sont kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, kCVPixelFormatType_420YpCbCr8BiPlanarFullRange et kCVPixelFormatType_32BGRA . "). L'étape suivante consiste à déterminer si le format HDR pour l'enregistrement peut être choisi manuellement pour être Dolby Vision, HLG ou HDR10.


0 commentaires

3 Réponses :


0
votes

C'est difficile à dire sans l'appareil en main, mais je suppose que (certains) des AVCaptureDevice d'un iPhone 12 prendront en charge les format isVideoHDRSupported charge la livraison HDR ( isVideoHDRSupported ).

Le correspondant AVCaptureVideoDataOutput de availableVideoPixelFormatTypes listera probablement kCVPixelFormatType_420YpCbCr10BiPlanarFullRange et types similaires en option.


3 commentaires

Eh bien, le type de format de pixel devrait être 422 plutôt que 420. Et AVCaptureMovieFileOutput devrait également afficher l'option d'enregistrement vidéo HDR, ce qui n'est pas le cas. La seule nouvelle API dans iOS 14.1 est l'ajout de l'espace colorimétrique BT2020 dans AVCaptureColorSpace. isVideoHDRSupported est une ancienne propriété du format de périphérique, mais cela n'a rien à voir avec la livraison de tampon d'échantillons 10 bits ou l'enregistrement de vidéos HDR étrangement.


Si j'ai bien compris, seul l'iPhone 12 prend en charge l'enregistrement HDR. Je suppose donc que vous ne voyez la prise en charge du format HDR que sur un vrai appareil iPhone 12. Quelles nouvelles API attendiez-vous?


Même sur l'iPhone 11 Pro, plus de 30% des formats retournent estVideoHDRSupported comme vrai. La documentation pour isVideoHDRSupported indique que "EDR est une fonctionnalité distincte de la vidéo HDR 10 bits (vue pour la première fois sur les iPhones 2020)". Ce n'est clairement pas la même chose que la vidéo HDR 10 bits.



0
votes

Mise à jour du 25 novembre.

Pour iOS 14.2, je peux vider tous les formats disponibles de l'instance AVCaptureDevice, semble que la sortie du journal s'explique assez bien. Comme indiqué ci-dessous, nous espérons que la définition de AVCaptureDevice.activeFormat sur l'un des formats de couleur large HDR + fera l'affaire.

_displayLinkDidRefresh():121 - Optional(<CVPixelBuffer 0x281300500 width=3840 height=2160 pixelFormat=xf20 iosurface=0x282008050 planes=2 poolName=450:decode_1>
<Plane 0 width=3840 height=2160 bytesPerRow=7680>
<Plane 1 width=1920 height=1080 bytesPerRow=7680>
<attributes={
    PixelFormatDescription =     {
        BitsPerComponent = 10;
        CGBitmapContextCompatibility = 0;
        CGImageCompatibility = 0;
        ComponentRange = FullRange;
        ContainsAlpha = 0;
        ContainsGrayscale = 0;
        ContainsRGB = 0;
        ContainsYCbCr = 1;
        FillExtendedPixelsCallback = {length = 24, bytes = 0x0000000000000000b48ab8a1010000000000000000000000};
        IOSurfaceCoreAnimationCompatibility = 1;
        IOSurfaceCoreAnimationCompatibilityHTPCOK = 1;
        IOSurfaceOpenGLESTextureCompatibility = 1;
        OpenGLESCompatibility = 1;
        PixelFormat = 2019963440;
        Planes =         (
                        {
                BitsPerBlock = 16;
                HorizontalSubsampling = 1;
                VerticalSubsampling = 1;
            },
                        {
                BitsPerBlock = 32;
                BlackBlock = {length = 4, bytes = 0x00800080};
                HorizontalSubsampling = 2;
                VerticalSubsampling = 2;
            }
        );
    };
} propagatedAttachments={
    CVFieldCount = 1;
    CVImageBufferChromaLocationBottomField = Left;
    CVImageBufferChromaLocationTopField = Left;
    CVImageBufferColorPrimaries = "ITU_R_2020";
    CVImageBufferTransferFunction = "ITU_R_2100_HLG";
    CVImageBufferYCbCrMatrix = "ITU_R_2020";
    QTMovieTime =     {
        TimeScale = 600;
        TimeValue = 12090;
    };
} nonPropagatedAttachments={
}>)

Depuis le 23 novembre, il s'agit toujours d'une enquête en cours, je pense qu'un effort conjoint est nécessaire, ou un ingénieur Apple peut y jeter un coup d'œil.

Je crois avoir regardé toutes les sessions WWDC17 / 18/19/20 disponibles sur ce sujet, et avec la nouvelle version de l'iPhone 12, quelques résultats ici.

La capture HDR à partir de la caméra et enregistrée directement en tant que vidéo HLG 10 bits n'est possible que sur l'iPhone 12 et plus récent. C'est ce qu'il prétend dans la version du produit, et j'ai des exemples de vidéos du nouveau téléphone de mon ami, il fonctionne comme prévu.

Dans WWDC2020, exportez des médias HDR dans votre application avec AVFoundation , il affirme:

À ce stade, j'aimerais aborder brièvement les plates-formes Apple qui peuvent prendre en charge l'exportation HDR.

iOS prend en charge l'encodage matériel HEVC sur les appareils dotés de puces Apple A10 Fusion ou plus récentes.

Heureusement, les appareils A10 existent depuis un certain temps, depuis l'iPhone 7, les iPad sortis en 2018 et l'iPod touch 2019.

En ce qui concerne les Mac, les encodeurs logiciels HEVC et Apple ProRes sont disponibles sur tous les Mac.

L'encodage matériel HEVC est généralement disponible sur les Mac 2017 et plus récents exécutant le nouveau macOS.

L'encodage matériel accélérera considérablement l'exportation.

Également dans cette vidéo, il affirme que l'exportation HDR ne fonctionne que pour l'encodage HEVC 10 bits , de sorte que le SoC A10 + devrait avoir une capacité d'encodage HEVC 10 bits. C'est une supposition, je peux éditer la vidéo iPhone12 HLG dans l'application Photo officielle sur iPhone 11 et SE2, et les performances d'écriture (4k @ 60p, HLG) sont assez bonnes, ce qui est un bon indicateur. Cependant, je n'ai pas de chance de faire fonctionner cela dans le code, l'exemple de code répertorié dans la vidéo ne peut pas être une image complète et j'ai encore du mal à trouver une démo fonctionnelle. Et en théorie, les appareils plus anciens devraient également avoir la capacité d'enregistrer HLG 10 bits, ou la caméra, le budget thermique / puissance est la limitation ici.

Cependant, la seule clé HDR pertinente est la VideoProfileLevelKey qui doit être définie sur HEVC_Main10_AutoLevel lors de l'exportation HDR à l'aide du codec HEVC.

Notez que HEVC HDR 8 bits n'est pas pris en charge et que cette clé n'est pas applicable aux exportations ProRes.

Très bien, prenons maintenant le temps de résumer comment vous configureriez les touches dont je viens de parler lors de la sortie vers deux formats HDR courants: HLG et HDR10. Ce tableau montre quels sont les paramètres HDR appropriés pour l'exportation d'un fichier HLG.

Une autre vidéo qui vaut la peine d'être visionnée encore et encore: éditez et lisez une vidéo HDR avec AVFoundation

Pendant le test, j'obtiens un CVPixelBuffer (format: kCVPixelFormatType_420YpCbCr10BiPlanarFullRange) qui est compatible HDR et qui est correctement géré par couleur à partir de l'échantillon vidéo HLG. Il s'agit d'un vidage de mon journal de console, et il fonctionne sur tous les appareils compatibles iOS 14, même avec les assez vieux iPhone6s (A9), car il ne s'agit ici que d'un décodage HEVC 10 bits.

format:0 <AVCaptureDeviceFormat: 0x283aa4480 'vide'/'420v'  192x 144, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @21.00), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333>
format:1 <AVCaptureDeviceFormat: 0x283aa4490 'vide'/'420f'  192x 144, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @21.00), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333, supports wide color>
format:2 <AVCaptureDeviceFormat: 0x283aa44b0 'vide'/'420v'  352x 288, { 3- 60 fps}, HRSI:3696x3024, fov:58.026, max zoom:189.00 (upscales @10.50), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333>
format:3 <AVCaptureDeviceFormat: 0x283aa44c0 'vide'/'420f'  352x 288, { 3- 60 fps}, HRSI:3696x3024, fov:58.026, max zoom:189.00 (upscales @10.50), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333, supports wide color>
format:4 <AVCaptureDeviceFormat: 0x283aa44d0 'vide'/'420v'  480x 360, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @8.40), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333>
format:5 <AVCaptureDeviceFormat: 0x283aa44e0 'vide'/'420f'  480x 360, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @8.40), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333, supports wide color>
format:6 <AVCaptureDeviceFormat: 0x283aa44f0 'vide'/'420v'  640x 480, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @6.30), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333>
format:7 <AVCaptureDeviceFormat: 0x283aa4500 'vide'/'420f'  640x 480, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @6.30), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333, supports wide color>
format:8 <AVCaptureDeviceFormat: 0x283aa4510 'vide'/'420v'  640x 480, { 6- 60 fps}, HRSI:2016x1512, fov:60.424, binned, max zoom:94.50 (upscales @3.15), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports multicam>
format:9 <AVCaptureDeviceFormat: 0x283aa4370 'vide'/'420f'  640x 480, { 6- 60 fps}, HRSI:2016x1512, fov:60.424, binned, max zoom:94.50 (upscales @3.15), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports wide color, supports multicam>
format:10 <AVCaptureDeviceFormat: 0x283aa44a0 'vide'/'420v'  960x 540, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:32.00 (upscales @4.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR>
format:11 <AVCaptureDeviceFormat: 0x283aa4520 'vide'/'420f'  960x 540, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:32.00 (upscales @4.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports wide color>
format:12 <AVCaptureDeviceFormat: 0x283aa4530 'vide'/'420v'  960x 540, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:32.00 (upscales @4.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333>
format:13 <AVCaptureDeviceFormat: 0x283aa4540 'vide'/'420f'  960x 540, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:32.00 (upscales @4.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports wide color>
format:14 <AVCaptureDeviceFormat: 0x283aa4550 'vide'/'420v' 1024x 768, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @3.94), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333>
format:15 <AVCaptureDeviceFormat: 0x283aa4560 'vide'/'420f' 1024x 768, { 3- 60 fps}, HRSI:4032x3024, fov:63.301, max zoom:189.00 (upscales @3.94), AF System:2, ISO:22.0-1760.0, SS:0.000020-0.333333, supports wide color>
format:16 <AVCaptureDeviceFormat: 0x283aa4570 'vide'/'420v' 1280x 720, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:24.00 (upscales @3.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR>
format:17 <AVCaptureDeviceFormat: 0x283aa4580 'vide'/'420f' 1280x 720, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:24.00 (upscales @3.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports wide color>
format:18 <AVCaptureDeviceFormat: 0x283aa4590 'vide'/'420v' 1280x 720, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:24.00 (upscales @3.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333>
format:19 <AVCaptureDeviceFormat: 0x283aa45a0 'vide'/'420f' 1280x 720, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:24.00 (upscales @3.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports wide color>
format:20 <AVCaptureDeviceFormat: 0x283aa45b0 'vide'/'420v' 1280x 720, { 6- 60 fps}, HRSI:2112x1188, fov:65.707, binned, supports vis, max zoom:24.00 (upscales @1.50), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports multicam>
format:21 <AVCaptureDeviceFormat: 0x283aa45c0 'vide'/'420f' 1280x 720, { 6- 60 fps}, HRSI:2112x1188, fov:65.707, binned, supports vis, max zoom:24.00 (upscales @1.50), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports wide color, supports 
format:22 <AVCaptureDeviceFormat: 0x283aa45d0 'vide'/'420v' 1280x 720, { 6-240 fps}, fov:65.707, binned, supports vis, max zoom:67.50 (upscales @1.50), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667>
format:23 <AVCaptureDeviceFormat: 0x283aa45e0 'vide'/'420f' 1280x 720, { 6-240 fps}, fov:65.707, binned, supports vis, max zoom:67.50 (upscales @1.50), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports wide color>
format:24 <AVCaptureDeviceFormat: 0x283aa5200 'vide'/'420v' 1440x1080, { 6- 60 fps}, HRSI:2016x1512, fov:60.424, binned, max zoom:94.50 (upscales @1.40), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports multicam>
format:25 <AVCaptureDeviceFormat: 0x283aa5210 'vide'/'420f' 1440x1080, { 6- 60 fps}, HRSI:2016x1512, fov:60.424, binned, max zoom:94.50 (upscales @1.40), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports wide color, supports multicam>
format:26 <AVCaptureDeviceFormat: 0x283aa5220 'vide'/'420v' 1920x1080, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:16.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports multicam>
format:27 <AVCaptureDeviceFormat: 0x283aa5230 'vide'/'420f' 1920x1080, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:16.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports wide color, supports 
format:28 <AVCaptureDeviceFormat: 0x283aa5240 'vide'/'420v' 1920x1080, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:16.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333>
format:29 <AVCaptureDeviceFormat: 0x283aa5250 'vide'/'420f' 1920x1080, { 3- 60 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:16.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports wide color>
format:30 <AVCaptureDeviceFormat: 0x283aa5260 'vide'/'420v' 1920x1080, { 6- 60 fps}, HRSI:2112x1188, fov:65.707, binned, supports vis, max zoom:16.00 (upscales @1.00), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports multicam>
format:31 <AVCaptureDeviceFormat: 0x283aa5270 'vide'/'420f' 1920x1080, { 6- 60 fps}, HRSI:2112x1188, fov:65.707, binned, supports vis, max zoom:16.00 (upscales @1.00), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports wide color, supports 
format:32 <AVCaptureDeviceFormat: 0x283aa5280 'vide'/'420v' 1920x1080, { 5-120 fps}, fov:65.707, supports vis, max zoom:135.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000012-0.200000>
format:33 <AVCaptureDeviceFormat: 0x283aa5290 'vide'/'420f' 1920x1080, { 5-120 fps}, fov:65.707, supports vis, max zoom:135.00 (upscales @2.00), AF System:2, ISO:22.0-880.0, SS:0.000012-0.200000, supports wide color>
format:34 <AVCaptureDeviceFormat: 0x283aa52a0 'vide'/'420v' 1920x1080, { 6-240 fps}, fov:65.707, binned, supports vis, max zoom:67.50 (upscales @1.00), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667>
format:35 <AVCaptureDeviceFormat: 0x283aa52b0 'vide'/'420f' 1920x1080, { 6-240 fps}, fov:65.707, binned, supports vis, max zoom:67.50 (upscales @1.00), AF System:1, ISO:22.0-880.0, SS:0.000011-0.166667, supports wide color>
format:36 <AVCaptureDeviceFormat: 0x283aa52c0 'vide'/'420v' 1920x1440, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @2.10), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports multicam>
format:37 <AVCaptureDeviceFormat: 0x283aa52d0 'vide'/'420f' 1920x1440, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @2.10), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports wide color, supports multicam>
format:38 <AVCaptureDeviceFormat: 0x283aa52e0 'vide'/'420v' 1920x1440, { 6- 60 fps}, HRSI:2016x1512, fov:62.720, binned, max zoom:94.50 (upscales @1.05), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports multicam>
format:39 <AVCaptureDeviceFormat: 0x283aa52f0 'vide'/'420f' 1920x1440, { 6- 60 fps}, HRSI:2016x1512, fov:62.720, binned, max zoom:94.50 (upscales @1.05), AF System:1, ISO:22.0-1760.0, SS:0.000011-0.166667, supports wide color, supports multicam>
format:40 <AVCaptureDeviceFormat: 0x283aa5300 'vide'/'420v' 2592x1936, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.56), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR>
format:41 <AVCaptureDeviceFormat: 0x283aa5310 'vide'/'420f' 2592x1936, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.56), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR, supports wide color>
format:42 <AVCaptureDeviceFormat: 0x283aa5320 'vide'/'420v' 3264x2448, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.24), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR>
format:43 <AVCaptureDeviceFormat: 0x283aa5330 'vide'/'420f' 3264x2448, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.24), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR, supports wide color>
format:44 <AVCaptureDeviceFormat: 0x283aa5340 'vide'/'420v' 3840x2160, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:9.00 (upscales @1.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR>
format:45 <AVCaptureDeviceFormat: 0x283aa5350 'vide'/'420f' 3840x2160, { 3- 30 fps}, HRSI:4224x2376, fov:65.707, supports vis, max zoom:9.00 (upscales @1.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports HDR, supports wide color>
format:46 <AVCaptureDeviceFormat: 0x283aa5360 'vide'/'420v' 3840x2160, { 3- 60 fps}, fov:65.707, supports vis, max zoom:129.12 (upscales @1.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333>
format:47 <AVCaptureDeviceFormat: 0x283aa5370 'vide'/'420f' 3840x2160, { 3- 60 fps}, fov:65.707, supports vis, max zoom:129.12 (upscales @1.00), AF System:2, ISO:22.0-880.0, SS:0.000020-0.333333, supports wide color>
format:48 <AVCaptureDeviceFormat: 0x283aa5380 'vide'/'420v' 4032x3024, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.00), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR, supports still image only depth>
format:49 <AVCaptureDeviceFormat: 0x283aa5390 'vide'/'420f' 4032x3024, { 3- 30 fps}, HRSI:4032x3024, fov:62.720, max zoom:189.00 (upscales @1.00), AF System:2, ISO:22.0-2112.0, SS:0.000020-0.333333, supports HDR, supports wide color, supports still image only depth>


7 commentaires

Il s'agit d'API pour enregistrer des vidéos en HDR (Dolby vision) sur les modèles iPhone 12, pas d'édition.


oui, j'attends encore mon nouveau téléphone, donc, pour le moment, je me penche sur le flux de travail d'édition / exportation de celui-ci.


Ok ça marche. Régler AVCaptureDeviceFormat sur celui avec l'index 27, par exemple, fournit des trames de 10 bits!


Btw, la réponse mise à jour est fausse. Vous devez en définir un avec le sous-type de média 'x420', pas ceux qui ont videoHDRS supporté, qui est pour EDR et PAS HDR10.


Oui, vous avez raison, j'ai reçu les commentaires de mon ami qui a acheté un iPhone12. Je publierai le correctif plus tard.


D'où vient le tampon? Je n'ai pas d'iPhone 12 sous la main, donc je ne peux tester HLG que depuis iPhone 12 sur iPhone 11. En utilisant AVDisplayLink, je peux saisir avec succès la texture RVB du film HLG pendant la lecture, AVFoundation effectuera la conversion pour vous. En interne, je pense qu'il utilise le GPU pour faire le travail, comme mentionné ici: developer.apple.com/documentation/metalperformanceshaders/ ... puisque la conversion de texture est une opération assez courante dans le monde GPU.


Pour mon propre test, j'ai testé ces formats. Les bons kCVPixelFormatType_420YpCbCr10BiPlanarFullRange, kCVPixelFormatType_64RGBALE, kCVPixelFormatType_32ARGB. Mauvais: kCVPixelFormatType_64ARGB: aucun tampon obtenu; kCVPixelFormatType_48RGB: aucun tampon obtenu; kCVPixelFormatType_32RGBA: mauvais tampon, toujours vert.



0
votes

D'accord, aucune des réponses données n'était correcte, alors j'ai fait des recherches après avoir pris un iPhone 12 mini en main et c'est ce que j'ai trouvé.

La documentation d'AVFoundation est silencieuse et parfois même incorrecte. On peut déduire de la documentation , il est impossible d'obtenir des tampons échantillons HDR 10 bits, en particulier si on lit la documentation de propriété VideoSettings de AVCaptureVideoDataOutput:

   On iOS, the only supported key is kCVPixelBufferPixelFormatTypeKey. 
   Supported pixel formats are kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, 
   kCVPixelFormatType_420YpCbCr8BiPlanarFullRange and kCVPixelFormatType_32BGRA

Il ressort de la documentation que l'on ne pourrait jamais obtenir de trames 10 bits. Mais en sondant -[AVCaptureDevice formats] , on peut trouver 4 formats qui sont différents et ont mediaSubtype comme 'x420', qui est kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange , un format 10 bits. Le moment -[AVCaptureDevice activeFormat] est défini sur l'un de ces 4 formats, AVCaptureVideoDataOutput change le format de tampon d'échantillon en kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange! L'espace colorimétrique actif d'AVCaptureDevice devient également AVCaptureColorSpace_HLG_BT2020.


0 commentaires