@@ -294,6 +294,14 @@ impl Buffer {
294
294
std:: mem:: size_of_val ( wrapper. inner_mut ( ) ) ,
295
295
) ,
296
296
} ,
297
+ BufferType :: EncPackedHeaderParameter ( ref mut wrapper) => (
298
+ wrapper. inner_mut ( ) as * mut _ as * mut std:: ffi:: c_void ,
299
+ std:: mem:: size_of_val ( wrapper. inner_mut ( ) ) ,
300
+ ) ,
301
+
302
+ BufferType :: EncPackedHeaderData ( ref data) => {
303
+ ( data. as_ptr ( ) as * mut std:: ffi:: c_void , data. len ( ) )
304
+ }
297
305
} ;
298
306
299
307
// Safe because `self` represents a valid `VAContext`. `ptr` and `size` are also ensured to
@@ -368,6 +376,10 @@ pub enum BufferType {
368
376
ProcPipelineParameter ( proc_pipeline:: ProcPipelineParameterBuffer ) ,
369
377
/// Abstraction over `VAQMatrixBufferType`.
370
378
QMatrix ( QMatrix ) ,
379
+ /// Abstraction over `VAEncPackedHeaderParameterBufferType`.
380
+ EncPackedHeaderParameter ( EncPackedHeaderParameter ) ,
381
+ /// Abstraction over `VAEncPackedHeaderDataBufferType`.
382
+ EncPackedHeaderData ( Vec < u8 > ) ,
371
383
}
372
384
373
385
impl BufferType {
@@ -404,7 +416,16 @@ impl BufferType {
404
416
BufferType :: ProcPipelineParameter ( _) => {
405
417
bindings:: VABufferType :: VAProcPipelineParameterBufferType
406
418
}
419
+
407
420
BufferType :: QMatrix ( _) => bindings:: VABufferType :: VAQMatrixBufferType ,
421
+
422
+ BufferType :: EncPackedHeaderParameter ( _) => {
423
+ bindings:: VABufferType :: VAEncPackedHeaderParameterBufferType
424
+ }
425
+
426
+ BufferType :: EncPackedHeaderData ( _) => {
427
+ bindings:: VABufferType :: VAEncPackedHeaderDataBufferType
428
+ }
408
429
}
409
430
}
410
431
}
@@ -628,3 +649,36 @@ pub enum EncMiscParameter {
628
649
/// Wrapper over `VAEncMiscParameterBuffer` with `VAEncMiscParameterQuantization`.
629
650
Quantization ( EncMiscParameterQuantization ) ,
630
651
}
652
+
653
+ /// Abstraction over the `VAEncPackedHeaderType` enum values we support.
654
+ #[ repr( u32 ) ]
655
+ pub enum EncPackedHeaderType {
656
+ /// Sequence header
657
+ Sequence = bindings:: VAEncPackedHeaderType :: VAEncPackedHeaderSequence ,
658
+ /// Picture header
659
+ Picture = bindings:: VAEncPackedHeaderType :: VAEncPackedHeaderPicture ,
660
+ /// Slice header
661
+ Slice = bindings:: VAEncPackedHeaderType :: VAEncPackedHeaderSlice ,
662
+ /// Raw data
663
+ RawData = bindings:: VAEncPackedHeaderType :: VAEncPackedHeaderRawData ,
664
+ }
665
+
666
+ /// Abstraction over `EncPackedHeaderParameterBuffer` types we support
667
+ pub struct EncPackedHeaderParameter ( Box < bindings:: VAEncPackedHeaderParameterBuffer > ) ;
668
+
669
+ impl EncPackedHeaderParameter {
670
+ /// Creates a new `EncPackedHeaderParameter` from the given `VAEncPackedHeaderParameterBuffer`.
671
+ pub fn new ( type_ : EncPackedHeaderType , length_in_bits : u32 , has_emulation : bool ) -> Self {
672
+ Self ( Box :: new ( bindings:: VAEncPackedHeaderParameterBuffer {
673
+ type_ : type_ as _ ,
674
+ bit_length : length_in_bits,
675
+ has_emulation_bytes : has_emulation as u8 ,
676
+ ..Default :: default ( )
677
+ } ) )
678
+ }
679
+
680
+ /// Returns a mutable reference to the inner `VAEncPackedHeaderParameterBuffer`.
681
+ pub fn inner_mut ( & mut self ) -> & mut bindings:: VAEncPackedHeaderParameterBuffer {
682
+ & mut self . 0
683
+ }
684
+ }
0 commit comments