Condividi tramite


Interfaccia IMF2DBuffer (mfobjects.h)

Rappresenta un buffer che contiene una superficie bidimensionale, ad esempio un fotogramma video.

Ereditarietà

L'interfaccia IMF2DBuffer eredita dall'interfaccia IUnknown . IMF2DBuffer ha anche questi tipi di membri:

Metodi

L'interfaccia IMF2DBuffer dispone di questi metodi.

 
IMF2DBuffer::ContiguousCopyFrom

Copia i dati in questo buffer da un buffer con un formato contiguo.
IMF2DBuffer::ContiguousCopyTo

Copia questo buffer nel buffer del chiamante, convertendo i dati in formato contiguo.
IMF2DBuffer::GetContiguousLength

Recupera il numero di byte necessari per archiviare il contenuto del buffer in formato contiguo.
IMF2DBuffer::GetScanline0AndPitch

Recupera un puntatore alla memoria del buffer e allo stride di superficie.
IMF2DBuffer::IsContiguousFormat

Esegue una query che indica se il buffer è contiguo nel formato nativo.
IMF2DBuffer::Lock2D

Concede al chiamante l'accesso alla memoria nel buffer. (IMF2DBuffer.Lock2D)
IMF2DBuffer::Unlock2D

Sblocca un buffer bloccato in precedenza. Chiamare questo metodo una volta per ogni chiamata a IMF2DBuffer::Lock2D.

Commenti

Per ottenere un puntatore a questa interfaccia, chiamare QueryInterface nel buffer multimediale.

Per usare un buffer 2D, è importante conoscere lo stride, ovvero il numero di byte necessari per passare da una riga di pixel alla successiva. Lo stride può essere maggiore della larghezza dell'immagine, perché la superficie può contenere byte di spaziatura interna dopo ogni riga di pixel. Lo stride può anche essere negativo, se i pixel sono orientati dal basso verso l'alto in memoria. Per altre informazioni, vedere Image Stride.

Ogni formato video definisce una rappresentazione contigua o compressa . Questa rappresentazione è compatibile con il layout standard di una superficie DirectX in memoria di sistema, senza spaziatura interna aggiuntiva. Per il video RGB, la rappresentazione contigua ha un passo uguale alla larghezza dell'immagine in byte, arrotondata fino al limite DWORD più vicino. Per il video YUV, il layout della rappresentazione contigua dipende dal formato YUV. Per i formati YUV planari, il piano Y potrebbe avere un passo diverso rispetto ai piani you e V.

Se un buffer multimediale supporta l'interfaccia IMF2DBuffer , non è garantito che il buffer sottostante abbia una rappresentazione contigua, perché potrebbero esserci byte di spaziatura interna aggiuntivi dopo ogni riga di pixel. Quando un buffer non è contiguo, i metodi Lock e Lock2D hanno comportamenti diversi:

  • Il metodo Lock2D restituisce un puntatore al buffer sottostante. Il buffer potrebbe non essere contiguo.
  • Il metodo Lock restituisce un buffer che è garantito essere contiguo. Se il buffer sottostante non è contiguo, il metodo copia i dati in un nuovo buffer e il metodo Unlock lo copia nuovamente nel buffer originale.
Chiamare il metodo Lock2D per accedere al buffer 2D nel formato nativo. Il formato nativo potrebbe non essere contiguo. Il metodo IMFMediaBuffer::Lock del buffer restituisce una rappresentazione contigua del buffer. Tuttavia, potrebbe essere necessaria una copia interna dal formato nativo. Per i buffer 2D, pertanto, è consigliabile usare il metodo Lock2D ed evitare il metodo Lock . Poiché il metodo Lock può causare fino a due copie del buffer, il metodo Lock2D è in genere più efficiente e deve essere usato quando possibile. Per verificare se il buffer sottostante è contiguo, chiamare IMF2DBuffer::IsContiguousFormat.

Per le immagini non compresse, la quantità di dati validi nel buffer è determinata dalla larghezza, dall'altezza e dal layout pixel dell'immagine. Per questo motivo, se si chiama Lock2D per accedere al buffer, non basarsi sui valori restituiti da IMFMediaBuffer::GetCurrentLength o IMFMediaBuffer::GetMaxLength. Analogamente, se si modificano i dati nel buffer, non è necessario chiamare IMFMediaBuffer::SetCurrentLength per aggiornare le dimensioni. In genere, è consigliabile evitare di combinare le chiamate ai metodi IMF2DBuffer e IMFMediaBuffer nello stesso buffer multimediale.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mfobjects.h (include Mfidl.h)

Vedi anche

Buffer multimediali

Interfacce di Media Foundation

Buffer video non compressi