Progettazione dettagliata per ISV (Profilo fotocamera V2)
Il consumo di profili fotocamera 1507 per ISV ha presentato una sfida significativa a causa della natura complessa del modo in cui i profili sono stati presentati e il fatto che i profili erano semplicemente un set di dati informativo, la pipeline sottostante avrebbe comunque consentito combinazioni di tipi di supporti e flussi che violavano i vincoli hardware.
Gli ISV hanno comunque avuto il rischio di configurare la pipeline di acquisizione in modo da non riuscire quando i flussi sono stati attivati.
Per Profilo fotocamera V2, la configurazione di un profilo selezionato al momento dell'inizializzazione dell'oggetto Media Capture verrà comunicata al server frame e il server frame espone solo combinazioni di flussi/tipi di supporti validi all'interno di tale profilo.
A causa del basso costo di creazione di più oggetti Media Capture quando viene instradato tramite il server frame, un'applicazione potrebbe precreare più istanze di oggetti Media Capture usando la stessa origine. Solo il primo creato comporta una latenza di creazione di origine. Le istanze successive accettano semplicemente l'origine già creata nel server frame e filtrano il set di flussi/tipi di supporti in base al profilo.
Un'applicazione che desidera esporre sia una modalità Foto di alta qualità che una modalità registrazione video che contiene video a frequenza di fotogrammi elevata o video 4K, può creare più istanze di oggetti Media Capture configurati con un profilo diverso per la stessa origine della fotocamera. Purché solo uno degli oggetti Media Capture sia attivamente in streaming in qualsiasi momento, il passaggio tra l'oggetto Media Capture comporta una bassa latenza (in genere il costo di alcune chiamate RPC).
Il profilo della fotocamera 1507 espone i profili tramite l'oggetto MediaCaptureVideoProfile. Questo oggetto viene individuato tramite la factory MediaCapture fornendo un ID dispositivo specifico. Questa visualizzazione incentrata sul dispositivo significa che un'app che desidera abilitare uno scenario specifico deve prima enumerare/trovare il dispositivo di scelta e usarlo per scorrere i profili disponibili.
Il profilo della fotocamera V2 estende l'area API per continuare a fornire una superficie API incentrata sul dispositivo, ma oltre a questo, il profilo della fotocamera V2 fornirà anche un'enumerazione del profilo basata su scenari.
Invece, a partire da una fotocamera specifica, un'applicazione inizia con uno scenario specifico. Ad esempio, registrazione video usando uno scenario di fotocamera con connessione mondiale.
Questo punto di ingresso fornisce l'applicazione di tutte le telecamere disponibili adatte per tale scenario. A seconda della specificità dello scenario, l'elenco MediaFrameSourceGroup risultante può contenere più voci. In alcuni casi, è possibile che non siano presenti voci. Ad esempio, la registrazione video usando la fotocamera mondiale per un dispositivo All-In-One che non ha una fotocamera di fronte al mondo restituirebbe un set vuoto.
Il "linguaggio" usato per descrivere lo scenario consente il fallback in base ai criteri minimi. Questo è il linguaggio che consente di "Registrazione video con una preferenza per la fotocamera di fronte al mondo e la massima risoluzione possibile con frequenza minima di fotogrammi di 30 fps".
Filtro basato sul profilo
Uno dei principali vantaggi dell'uso dell'architettura del server frame è il fatto che l'oggetto Contesto client nel server frame, che rappresenta una rappresentazione virtuale di un oggetto Media Capture nell'app client, viene saccoppiato dall'origine fisica.
In questo modo è possibile configurare più istanze di oggetti Contesto client usando le stesse origini in modalità specifiche dell'operazione, che possono includere il filtro di pin/tipi di supporti che possono essere in conflitto con il caso d'uso sottostante.
Poiché le origini dei dispositivi non fanno parte del contesto client, la creazione di più istanze di oggetti Contesto client con una configurazione diversa non comporta un sovraccarico significativo (solo un sovraccarico necessario per tenere traccia delle strutture dati interne).
La latenza per la creazione/inizializzazione di un'origine è ancora presente per il primo contesto client, ma una volta creata, le istanze successive con la stessa configurazione o configurazione diversa comportano solo il sovraccarico aggiunto della creazione delle strutture dati interne.
Il diagramma seguente mostra come un'acquisizione multimediale configurata con profilo Null venga esposta dal server frame tramite il contesto client:
Nel diagramma precedente ogni origine espone tre pin: anteprima, acquisizione e foto. Poiché è stato impostato un profilo Null, l'acquisizione multimediale risultante espone tutti e nove i pin all'applicazione. L'applicazione può esaminare ogni pin e ogni tipo di supporto disponibile in ogni pin.
Anche se ciò offre flessibilità per l'app, complica anche la complessità della gestione della macchina di stato che determina quale combinazione di tipi di supporti/pin può essere attivata simultaneamente.
Tuttavia, usando il filtro basato sul profilo:
L'applicazione può creare più istanze di Media Capture, ognuna configurata con un profilo specifico. Nel diagramma precedente l'istanza del profilo Null viene lasciata come illustrazione, l'applicazione può scegliere di non creare l'istanza del profilo Null.
Gli oggetti Media Capture inferiori sono configurati con un profilo specifico. In base alle informazioni sul profilo pubblicate dall'IHV/OEM delle origini, la pipeline risultante eseguirà solo il pull delle origini necessarie.
Per il profilo HQ Photo World Facing, solo i pin Anteprima e Foto di World Face RGB (Fonte 3) verranno esposti insieme solo ai tipi di supporti indicati dall'IHV/OEM per le operazioni fotografiche. Ciò presuppone che l'IHV/OEM abbia indicato che per la foto HQ, l'acquisizione simultanea non è possibile. Se l'acquisizione simultanea è consentita, il pin di acquisizione, insieme ai tipi di supporti che possono essere usati per le operazioni di foto e registrazione simultanee, vengono esposti.
Per l'utente di registrazione, verranno esposti solo i pin anteprima e acquisizione dell'oggetto RGB (origine 1) dell'utente. Anche in questo caso, il diagramma precedente presuppone che le operazioni fotografiche non siano possibili quando il pin di acquisizione è attivo.
Per il profilo Realtà mista, i flussi video World Face RGB e World Face Perception verranno esposti all'app client. E ancora, solo i tipi di supporti che sono garantiti per il funzionamento simultaneo sono resi disponibili.