Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: third_party/libva/va/va.h

Issue 2834313002: Update third_party/libva to version 1.7.1 (Closed)
Patch Set: Update third_party/libva to version 1.7.1 and check whether the version of libva a platform support… Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libva/README.chromium ('k') | third_party/libva/va/va_dec_vp9.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved. 2 * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved.
3 * 3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a 4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the 5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including 6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish, 7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to 8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to 9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions: 10 * the following conditions:
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 #define VA_FILTER_SCALING_FAST 0x00000100 215 #define VA_FILTER_SCALING_FAST 0x00000100
216 #define VA_FILTER_SCALING_HQ 0x00000200 216 #define VA_FILTER_SCALING_HQ 0x00000200
217 #define VA_FILTER_SCALING_NL_ANAMORPHIC 0x00000300 217 #define VA_FILTER_SCALING_NL_ANAMORPHIC 0x00000300
218 #define VA_FILTER_SCALING_MASK 0x00000f00 218 #define VA_FILTER_SCALING_MASK 0x00000f00
219 219
220 /** 220 /**
221 * Returns a short english description of error_status 221 * Returns a short english description of error_status
222 */ 222 */
223 const char *vaErrorStr(VAStatus error_status); 223 const char *vaErrorStr(VAStatus error_status);
224 224
225 typedef struct _VARectangle {
226 short x;
227 short y;
228 unsigned short width;
229 unsigned short height;
230 } VARectangle;
231
225 /** 232 /**
226 * Initialization: 233 * Initialization:
227 * A display must be obtained by calling vaGetDisplay() before calling 234 * A display must be obtained by calling vaGetDisplay() before calling
228 * vaInitialize() and other functions. This connects the API to the 235 * vaInitialize() and other functions. This connects the API to the
229 * native window system. 236 * native window system.
230 * For X Windows, native_dpy would be from XOpenDisplay() 237 * For X Windows, native_dpy would be from XOpenDisplay()
231 */ 238 */
232 typedef void* VANativeDisplay; /* window system dependent */ 239 typedef void* VANativeDisplay; /* window system dependent */
233 240
234 int vaDisplayIsValid(VADisplay dpy); 241 int vaDisplayIsValid(VADisplay dpy);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 /** 280 /**
274 * Return a function pointer given a function name in the library. 281 * Return a function pointer given a function name in the library.
275 * This allows private interfaces into the library 282 * This allows private interfaces into the library
276 */ 283 */
277 VAPrivFunc vaGetLibFunc ( 284 VAPrivFunc vaGetLibFunc (
278 VADisplay dpy, 285 VADisplay dpy,
279 const char *func 286 const char *func
280 ); 287 );
281 288
282 /** Currently defined profiles */ 289 /** Currently defined profiles */
283 typedef enum 290 typedef enum {
284 { 291 /** \brief Profile ID used for video processing. */
285 /** \brief Profile ID used for video processing. */ 292 VAProfileNone = -1,
286 VAProfileNone = -1, 293 VAProfileMPEG2Simple = 0,
287 VAProfileMPEG2Simple» » = 0, 294 VAProfileMPEG2Main = 1,
288 VAProfileMPEG2Main» » » = 1, 295 VAProfileMPEG4Simple = 2,
289 VAProfileMPEG4Simple» » = 2, 296 VAProfileMPEG4AdvancedSimple = 3,
290 VAProfileMPEG4AdvancedSimple» = 3, 297 VAProfileMPEG4Main = 4,
291 VAProfileMPEG4Main» » » = 4, 298 VAProfileH264Baseline = 5,
292 VAProfileH264Baseline» » = 5, 299 VAProfileH264Main = 6,
293 VAProfileH264Main» » » = 6, 300 VAProfileH264High = 7,
294 VAProfileH264High» » » = 7, 301 VAProfileVC1Simple = 8,
295 VAProfileVC1Simple» » » = 8, 302 VAProfileVC1Main = 9,
296 VAProfileVC1Main» » » = 9, 303 VAProfileVC1Advanced = 10,
297 VAProfileVC1Advanced» » = 10, 304 VAProfileH263Baseline = 11,
298 VAProfileH263Baseline» » = 11, 305 VAProfileJPEGBaseline = 12,
299 VAProfileJPEGBaseline = 12, 306 VAProfileH264ConstrainedBaseline = 13,
300 VAProfileH264ConstrainedBaseline = 13, 307 VAProfileVP8Version0_3 = 14,
301 VAProfileVP8Version0_3 = 14, 308 VAProfileH264MultiviewHigh = 15,
302 VAProfileH264MultiviewHigh = 15, 309 VAProfileH264StereoHigh = 16,
303 VAProfileH264StereoHigh = 16, 310 VAProfileHEVCMain = 17,
304 VAProfileHEVCMain = 17, 311 VAProfileHEVCMain10 = 18,
305 VAProfileHEVCMain10 = 18, 312 VAProfileVP9Profile0 = 19,
306 VAProfileVP9Profile0 = 19 313 VAProfileVP9Profile1 = 20,
314 VAProfileVP9Profile2 = 21,
315 VAProfileVP9Profile3 = 22
307 } VAProfile; 316 } VAProfile;
308 317
309 /** 318 /**
310 * Currently defined entrypoints 319 * Currently defined entrypoints
311 */ 320 */
312 typedef enum 321 typedef enum {
313 { 322 VAEntrypointVLD = 1,
314 VAEntrypointVLD» » = 1, 323 VAEntrypointIZZ = 2,
315 VAEntrypointIZZ» » = 2, 324 VAEntrypointIDCT = 3,
316 VAEntrypointIDCT» » = 3, 325 VAEntrypointMoComp = 4,
317 VAEntrypointMoComp» » = 4, 326 VAEntrypointDeblocking = 5,
318 VAEntrypointDeblocking» = 5, 327 VAEntrypointEncSlice = 6, /* slice level encode */
319 VAEntrypointEncSlice» = 6,» /* slice level encode */ 328 VAEntrypointEncPicture = 7, /* pictuer encode, JPEG, etc */
320 VAEntrypointEncPicture » = 7,» /* pictuer encode, JPEG, etc */ 329 /*
321 VAEntrypointVideoProc = 10, /**< Video pre/post-processing. */ 330 * For an implementation that supports a low power/high performance variant
331 * for slice level encode, it can choose to expose the
332 * VAEntrypointEncSliceLP entrypoint. Certain encoding tools may not be
333 * available with this entrypoint (e.g. interlace, MBAFF) and the
334 * application can query the encoding configuration attributes to find
335 * out more details if this entrypoint is supported.
336 */
337 VAEntrypointEncSliceLP = 8,
338 VAEntrypointVideoProc = 10, /**< Video pre/post-processing. */
322 } VAEntrypoint; 339 } VAEntrypoint;
323 340
324 /** Currently defined configuration attribute types */ 341 /** Currently defined configuration attribute types */
325 typedef enum 342 typedef enum {
326 { 343 VAConfigAttribRTFormat = 0,
327 VAConfigAttribRTFormat» » = 0, 344 VAConfigAttribSpatialResidual = 1,
328 VAConfigAttribSpatialResidual» = 1, 345 VAConfigAttribSpatialClipping = 2,
329 VAConfigAttribSpatialClipping» = 2, 346 VAConfigAttribIntraResidual = 3,
330 VAConfigAttribIntraResidual»» = 3, 347 VAConfigAttribEncryption = 4,
331 VAConfigAttribEncryption» » = 4, 348 VAConfigAttribRateControl = 5,
332 VAConfigAttribRateControl» » = 5,
333 349
334 /** @name Attributes for decoding */ 350 /** @name Attributes for decoding */
335 /**@{*/ 351 /**@{*/
336 /** 352 /**
337 * \brief Slice Decoding mode. Read/write. 353 * \brief Slice Decoding mode. Read/write.
338 * 354 *
339 * This attribute determines what mode the driver supports for slice 355 * This attribute determines what mode the driver supports for slice
340 * decoding, through vaGetConfigAttributes(); and what mode the user 356 * decoding, through vaGetConfigAttributes(); and what mode the user
341 * will be providing to the driver, through vaCreateConfig(), if the 357 * will be providing to the driver, through vaCreateConfig(), if the
342 * driver supports those. If this attribute is not set by the user then 358 * driver supports those. If this attribute is not set by the user then
343 * it is assumed that VA_DEC_SLICE_MODE_NORMAL mode is used. 359 * it is assumed that VA_DEC_SLICE_MODE_NORMAL mode is used.
344 * 360 *
345 * See \c VA_DEC_SLICE_MODE_xxx for the list of slice decoding modes. 361 * See \c VA_DEC_SLICE_MODE_xxx for the list of slice decoding modes.
346 */ 362 */
347 VAConfigAttribDecSliceMode» » = 6, 363 VAConfigAttribDecSliceMode = 6,
348 364
349 /** @name Attributes for encoding */ 365 /** @name Attributes for encoding */
350 /**@{*/ 366 /**@{*/
351 /** 367 /**
352 * \brief Packed headers mode. Read/write. 368 * \brief Packed headers mode. Read/write.
353 * 369 *
354 * This attribute determines what packed headers the driver supports, 370 * This attribute determines what packed headers the driver supports,
355 * through vaGetConfigAttributes(); and what packed headers the user 371 * through vaGetConfigAttributes(); and what packed headers the user
356 * will be providing to the driver, through vaCreateConfig(), if the 372 * will be providing to the driver, through vaCreateConfig(), if the
357 * driver supports those. 373 * driver supports those.
358 * 374 *
359 * See \c VA_ENC_PACKED_HEADER_xxx for the list of packed headers. 375 * See \c VA_ENC_PACKED_HEADER_xxx for the list of packed headers.
360 */ 376 */
361 VAConfigAttribEncPackedHeaders = 10, 377 VAConfigAttribEncPackedHeaders = 10,
362 /** 378 /**
363 * \brief Interlaced mode. Read/write. 379 * \brief Interlaced mode. Read/write.
364 * 380 *
365 * This attribute determines what kind of interlaced encoding mode 381 * This attribute determines what kind of interlaced encoding mode
366 * the driver supports. 382 * the driver supports.
367 * 383 *
368 * See \c VA_ENC_INTERLACED_xxx for the list of interlaced modes. 384 * See \c VA_ENC_INTERLACED_xxx for the list of interlaced modes.
369 */ 385 */
370 VAConfigAttribEncInterlaced = 11, 386 VAConfigAttribEncInterlaced = 11,
371 /** 387 /**
372 * \brief Maximum number of reference frames. Read-only. 388 * \brief Maximum number of reference frames. Read-only.
373 * 389 *
374 * This attribute determines the maximum number of reference 390 * This attribute determines the maximum number of reference
375 * frames supported for encoding. 391 * frames supported for encoding.
376 * 392 *
377 * Note: for H.264 encoding, the value represents the maximum number 393 * Note: for H.264 encoding, the value represents the maximum number
378 * of reference frames for both the reference picture list 0 (bottom 394 * of reference frames for both the reference picture list 0 (bottom
379 * 16 bits) and the reference picture list 1 (top 16 bits). 395 * 16 bits) and the reference picture list 1 (top 16 bits).
380 */ 396 */
381 VAConfigAttribEncMaxRefFrames = 13, 397 VAConfigAttribEncMaxRefFrames = 13,
382 /** 398 /**
383 * \brief Maximum number of slices per frame. Read-only. 399 * \brief Maximum number of slices per frame. Read-only.
384 * 400 *
385 * This attribute determines the maximum number of slices the 401 * This attribute determines the maximum number of slices the
386 * driver can support to encode a single frame. 402 * driver can support to encode a single frame.
387 */ 403 */
388 VAConfigAttribEncMaxSlices = 14, 404 VAConfigAttribEncMaxSlices = 14,
389 /** 405 /**
390 * \brief Slice structure. Read-only. 406 * \brief Slice structure. Read-only.
391 * 407 *
392 * This attribute determines slice structures supported by the 408 * This attribute determines slice structures supported by the
393 * driver for encoding. This attribute is a hint to the user so 409 * driver for encoding. This attribute is a hint to the user so
394 * that he can choose a suitable surface size and how to arrange 410 * that he can choose a suitable surface size and how to arrange
395 * the encoding process of multiple slices per frame. 411 * the encoding process of multiple slices per frame.
396 * 412 *
397 * More specifically, for H.264 encoding, this attribute 413 * More specifically, for H.264 encoding, this attribute
398 * determines the range of accepted values to 414 * determines the range of accepted values to
399 * VAEncSliceParameterBufferH264::macroblock_address and 415 * VAEncSliceParameterBufferH264::macroblock_address and
400 * VAEncSliceParameterBufferH264::num_macroblocks. 416 * VAEncSliceParameterBufferH264::num_macroblocks.
401 * 417 *
402 * See \c VA_ENC_SLICE_STRUCTURE_xxx for the supported slice 418 * See \c VA_ENC_SLICE_STRUCTURE_xxx for the supported slice
403 * structure types. 419 * structure types.
404 */ 420 */
405 VAConfigAttribEncSliceStructure = 15, 421 VAConfigAttribEncSliceStructure = 15,
406 /** 422 /**
407 * \brief Macroblock information. Read-only. 423 * \brief Macroblock information. Read-only.
408 * 424 *
409 * This attribute determines whether the driver supports extra 425 * This attribute determines whether the driver supports extra
410 * encoding information per-macroblock. e.g. QP. 426 * encoding information per-macroblock. e.g. QP.
411 * 427 *
412 * More specifically, for H.264 encoding, if the driver returns a non-zero 428 * More specifically, for H.264 encoding, if the driver returns a non-zero
413 * value for this attribute, this means the application can create 429 * value for this attribute, this means the application can create
414 * additional #VAEncMacroblockParameterBufferH264 buffers referenced 430 * additional #VAEncMacroblockParameterBufferH264 buffers referenced
415 * through VAEncSliceParameterBufferH264::macroblock_info. 431 * through VAEncSliceParameterBufferH264::macroblock_info.
416 */ 432 */
417 VAConfigAttribEncMacroblockInfo = 16, 433 VAConfigAttribEncMacroblockInfo = 16,
418 /** 434 /**
419 * \brief JPEG encoding attribute. Read-only. 435 * \brief JPEG encoding attribute. Read-only.
420 * 436 *
421 * This attribute exposes a number of capabilities of the underlying 437 * This attribute exposes a number of capabilities of the underlying
422 * JPEG implementation. The attribute value is partitioned into fields as de fined in the 438 * JPEG implementation. The attribute value is partitioned into fields as
423 * VAConfigAttribValEncJPEG union. 439 * defined in the VAConfigAttribValEncJPEG union.
424 */ 440 */
425 VAConfigAttribEncJPEG = 20, 441 VAConfigAttribEncJPEG = 20,
426 /** 442 /**
427 * \brief Encoding quality range attribute. Read-only. 443 * \brief Encoding quality range attribute. Read-only.
428 * 444 *
429 * This attribute conveys whether the driver supports different quality leve l settings 445 * This attribute conveys whether the driver supports different quality level
430 * for encoding. A value less than or equal to 1 means that the encoder only has a single 446 * settings for encoding. A value less than or equal to 1 means that the
431 * quality setting, and a value greater than 1 represents the number of qual ity levels 447 * encoder only has a single quality setting, and a value greater than 1
432 * that can be configured. e.g. a value of 2 means there are two distinct qu ality levels. 448 * represents the number of quality levels that can be configured. e.g. a
433 */ 449 * value of 2 means there are two distinct quality levels.
434 VAConfigAttribEncQualityRange = 21, 450 */
435 /** 451 VAConfigAttribEncQualityRange = 21,
436 * \brief Encoding skip frame attribute. Read-only. 452 /**
437 * 453 * \brief Encoding skip frame attribute. Read-only.
438 * This attribute conveys whether the driver supports sending skip frame par ameters 454 *
439 * (VAEncMiscParameterTypeSkipFrame) to the encoder's rate control, when the user has 455 * This attribute conveys whether the driver supports sending skip frame
440 * externally skipped frames. 456 * parameters (VAEncMiscParameterTypeSkipFrame) to the encoder's rate control,
441 */ 457 * when the user has externally skipped frames.
442 VAConfigAttribEncSkipFrame = 24, 458 */
443 /**@}*/ 459 VAConfigAttribEncSkipFrame = 24,
444 VAConfigAttribTypeMax 460 /**
461 * \brief Encoding region-of-interest (ROI) attribute. Read-only.
462 *
463 * This attribute conveys whether the driver supports region-of-interest (ROI)
464 * encoding, based on user provided ROI rectangles. The attribute value is
465 * partitioned into fields as defined in the VAConfigAttribValEncROI union.
466 *
467 * If ROI encoding is supported, the ROI information is passed to the driver
468 * using VAEncMiscParameterTypeROI.
469 */
470 VAConfigAttribEncROI = 25,
471 /**@}*/
472 VAConfigAttribTypeMax
445 } VAConfigAttribType; 473 } VAConfigAttribType;
446 474
447 /** 475 /**
448 * Configuration attributes 476 * Configuration attributes
449 * If there is more than one value for an attribute, a default 477 * If there is more than one value for an attribute, a default
450 * value will be assigned to the attribute if the client does not 478 * value will be assigned to the attribute if the client does not
451 * specify the attribute when creating a configuration 479 * specify the attribute when creating a configuration
452 */ 480 */
453 typedef struct _VAConfigAttrib { 481 typedef struct _VAConfigAttrib {
454 VAConfigAttribType type; 482 VAConfigAttribType type;
455 unsigned int value; /* OR'd flags (bits) for this attribute */ 483 unsigned int value; /* OR'd flags (bits) for this attribute */
456 } VAConfigAttrib; 484 } VAConfigAttrib;
457 485
458 /** attribute value for VAConfigAttribRTFormat */ 486 /** attribute value for VAConfigAttribRTFormat */
459 #define VA_RT_FORMAT_YUV420 0x00000001 487 #define VA_RT_FORMAT_YUV420 0x00000001
460 #define VA_RT_FORMAT_YUV422 0x00000002 488 #define VA_RT_FORMAT_YUV422 0x00000002
461 #define VA_RT_FORMAT_YUV444 0x00000004 489 #define VA_RT_FORMAT_YUV444 0x00000004
462 #define VA_RT_FORMAT_YUV411 0x00000008 490 #define VA_RT_FORMAT_YUV411 0x00000008
463 #define VA_RT_FORMAT_YUV400 0x00000010 491 #define VA_RT_FORMAT_YUV400 0x00000010
492 /** YUV formats with more than 8 bpp */
493 #define VA_RT_FORMAT_YUV420_10BPP 0x00000100
494 /** RGB formats */
464 #define VA_RT_FORMAT_RGB16 0x00010000 495 #define VA_RT_FORMAT_RGB16 0x00010000
465 #define VA_RT_FORMAT_RGB32 0x00020000 496 #define VA_RT_FORMAT_RGB32 0x00020000
466 /* RGBP covers RGBP and BGRP fourcc */ 497 /* RGBP covers RGBP and BGRP fourcc */
467 #define VA_RT_FORMAT_RGBP 0x00100000 498 #define VA_RT_FORMAT_RGBP 0x00100000
468 #define VA_RT_FORMAT_PROTECTED 0x80000000 499 #define VA_RT_FORMAT_PROTECTED 0x80000000
469 500
470 /** @name Attribute values for VAConfigAttribRateControl */ 501 /** @name Attribute values for VAConfigAttribRateControl */
471 /**@{*/ 502 /**@{*/
472 /** \brief Driver does not support any form of rate control. */ 503 /** \brief Driver does not support any form of rate control. */
473 #define VA_RC_NONE 0x00000001 504 #define VA_RC_NONE 0x00000001
474 /** \brief Constant bitrate. */ 505 /** \brief Constant bitrate. */
475 #define VA_RC_CBR 0x00000002 506 #define VA_RC_CBR 0x00000002
476 /** \brief Variable bitrate. */ 507 /** \brief Variable bitrate. */
477 #define VA_RC_VBR 0x00000004 508 #define VA_RC_VBR 0x00000004
478 /** \brief Video conference mode. */ 509 /** \brief Video conference mode. */
479 #define VA_RC_VCM 0x00000008 510 #define VA_RC_VCM 0x00000008
480 /** \brief Constant QP. */ 511 /** \brief Constant QP. */
481 #define VA_RC_CQP 0x00000010 512 #define VA_RC_CQP 0x00000010
482 /** \brief Variable bitrate with peak rate higher than average bitrate. */ 513 /** \brief Variable bitrate with peak rate higher than average bitrate. */
483 #define VA_RC_VBR_CONSTRAINED 0x00000020 514 #define VA_RC_VBR_CONSTRAINED 0x00000020
515 /** \brief Macroblock based rate control. Per MB control is decided
516 * internally in the encoder. It may be combined with other RC modes, except
517 * CQP. */
518 #define VA_RC_MB 0x00000080
519
484 /**@}*/ 520 /**@}*/
485 521
486 /** @name Attribute values for VAConfigAttribDecSliceMode */ 522 /** @name Attribute values for VAConfigAttribDecSliceMode */
487 /**@{*/ 523 /**@{*/
488 /** \brief Driver supports normal mode for slice decoding */ 524 /** \brief Driver supports normal mode for slice decoding */
489 #define VA_DEC_SLICE_MODE_NORMAL 0x00000001 525 #define VA_DEC_SLICE_MODE_NORMAL 0x00000001
490 /** \brief Driver supports base mode for slice decoding */ 526 /** \brief Driver supports base mode for slice decoding */
491 #define VA_DEC_SLICE_MODE_BASE 0x00000002 527 #define VA_DEC_SLICE_MODE_BASE 0x00000002
492 /**@}*/ 528 /**@}*/
493 529
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 /** \brief set to 1 for differential. */ 579 /** \brief set to 1 for differential. */
544 unsigned int differential_mode : 1; 580 unsigned int differential_mode : 1;
545 unsigned int max_num_components : 3; 581 unsigned int max_num_components : 3;
546 unsigned int max_num_scans : 4; 582 unsigned int max_num_scans : 4;
547 unsigned int max_num_huffman_tables : 3; 583 unsigned int max_num_huffman_tables : 3;
548 unsigned int max_num_quantization_tables : 3; 584 unsigned int max_num_quantization_tables : 3;
549 } bits; 585 } bits;
550 unsigned int value; 586 unsigned int value;
551 } VAConfigAttribValEncJPEG; 587 } VAConfigAttribValEncJPEG;
552 588
589 /** \brief Attribute value for VAConfigAttribEncROI */
590 typedef union _VAConfigAttribValEncROI {
591 struct {
592 /** \brief The number of ROI regions supported, 0 if ROI is not supported.
593 */
594 unsigned int num_roi_regions : 8;
595 /** \brief Indicates if ROI priority indication is supported when
596 * VAConfigAttribRateControl != VA_RC_CQP, else only ROI delta QP added on
597 * top of the frame level QP is supported when VAConfigAttribRateControl ==
598 * VA_RC_CQP.
599 */
600 unsigned int roi_rc_priority_support : 1;
601 unsigned int reserved : 23;
602 } bits;
603 unsigned int value;
604 } VAConfigAttribValEncROI;
605
553 /** 606 /**
554 * if an attribute is not applicable for a given 607 * if an attribute is not applicable for a given
555 * profile/entrypoint pair, then set the value to the following 608 * profile/entrypoint pair, then set the value to the following
556 */ 609 */
557 #define VA_ATTRIB_NOT_SUPPORTED 0x80000000 610 #define VA_ATTRIB_NOT_SUPPORTED 0x80000000
558 611
559 /** Get maximum number of profiles supported by the implementation */ 612 /** Get maximum number of profiles supported by the implementation */
560 int vaMaxNumProfiles ( 613 int vaMaxNumProfiles (
561 VADisplay dpy 614 VADisplay dpy
562 ); 615 );
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 * 1056 *
1004 * The default buffer used by most filters is #VAProcFilterParameterBuffer. 1057 * The default buffer used by most filters is #VAProcFilterParameterBuffer.
1005 * Filters requiring advanced parameters include, but are not limited to, 1058 * Filters requiring advanced parameters include, but are not limited to,
1006 * deinterlacing (#VAProcFilterParameterBufferDeinterlacing), 1059 * deinterlacing (#VAProcFilterParameterBufferDeinterlacing),
1007 * color balance (#VAProcFilterParameterBufferColorBalance), etc. 1060 * color balance (#VAProcFilterParameterBufferColorBalance), etc.
1008 */ 1061 */
1009 VAProcFilterParameterBufferType = 42, 1062 VAProcFilterParameterBufferType = 42,
1010 VABufferTypeMax 1063 VABufferTypeMax
1011 } VABufferType; 1064 } VABufferType;
1012 1065
1013 typedef enum 1066 typedef enum {
1014 { 1067 VAEncMiscParameterTypeFrameRate = 0,
1015 VAEncMiscParameterTypeFrameRate » = 0, 1068 VAEncMiscParameterTypeRateControl = 1,
1016 VAEncMiscParameterTypeRateControl »= 1, 1069 VAEncMiscParameterTypeMaxSliceSize = 2,
1017 VAEncMiscParameterTypeMaxSliceSize» = 2, 1070 VAEncMiscParameterTypeAIR = 3,
1018 VAEncMiscParameterTypeAIR » = 3, 1071 /** \brief Buffer type used to express a maximum frame size (in bits). */
1019 /** \brief Buffer type used to express a maximum frame size (in bits). */ 1072 VAEncMiscParameterTypeMaxFrameSize = 4,
1020 VAEncMiscParameterTypeMaxFrameSize = 4, 1073 /** \brief Buffer type used for HRD parameters. */
1021 /** \brief Buffer type used for HRD parameters. */ 1074 VAEncMiscParameterTypeHRD = 5,
1022 VAEncMiscParameterTypeHRD = 5, 1075 VAEncMiscParameterTypeQualityLevel = 6,
1023 VAEncMiscParameterTypeQualityLevel = 6, 1076 /** \brief Buffer type used for sending skip frame parameters to the encoder's
1024 /** \brief Buffer type used for sending skip frame parameters to the encoder 's 1077 * rate control, when the user has externally skipped frames. */
1025 * rate control, when the user has externally skipped frames. */ 1078 VAEncMiscParameterTypeSkipFrame = 9,
1026 VAEncMiscParameterTypeSkipFrame = 9 1079 /** \brief Buffer type used for region-of-interest (ROI) parameters. */
1080 VAEncMiscParameterTypeROI = 10
1027 } VAEncMiscParameterType; 1081 } VAEncMiscParameterType;
1028 1082
1029 /** \brief Packed header type. */ 1083 /** \brief Packed header type. */
1030 typedef enum { 1084 typedef enum {
1031 /** \brief Packed sequence header. */ 1085 /** \brief Packed sequence header. */
1032 VAEncPackedHeaderSequence = 1, 1086 VAEncPackedHeaderSequence = 1,
1033 /** \brief Packed picture header. */ 1087 /** \brief Packed picture header. */
1034 VAEncPackedHeaderPicture = 2, 1088 VAEncPackedHeaderPicture = 2,
1035 /** \brief Packed slice header. */ 1089 /** \brief Packed slice header. */
1036 VAEncPackedHeaderSlice = 3, 1090 VAEncPackedHeaderSlice = 3,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 unsigned int initial_qp; 1153 unsigned int initial_qp;
1100 unsigned int min_qp; 1154 unsigned int min_qp;
1101 unsigned int basic_unit_size; 1155 unsigned int basic_unit_size;
1102 union 1156 union
1103 { 1157 {
1104 struct 1158 struct
1105 { 1159 {
1106 unsigned int reset : 1; 1160 unsigned int reset : 1;
1107 unsigned int disable_frame_skip : 1; /* Disable frame skip in rate c ontrol mode */ 1161 unsigned int disable_frame_skip : 1; /* Disable frame skip in rate c ontrol mode */
1108 unsigned int disable_bit_stuffing : 1; /* Disable bit stuffing in ra te control mode */ 1162 unsigned int disable_bit_stuffing : 1; /* Disable bit stuffing in ra te control mode */
1163 unsigned int
1164 mb_rate_control : 4; /* Control VA_RC_MB 0: default, 1: enable,
1165 2: disable, other: reserved*/
1109 } bits; 1166 } bits;
1110 unsigned int value; 1167 unsigned int value;
1111 } rc_flags; 1168 } rc_flags;
1112 } VAEncMiscParameterRateControl; 1169 } VAEncMiscParameterRateControl;
1113 1170
1114 typedef struct _VAEncMiscParameterFrameRate 1171 typedef struct _VAEncMiscParameterFrameRate
1115 { 1172 {
1116 unsigned int framerate; 1173 unsigned int framerate;
1117 } VAEncMiscParameterFrameRate; 1174 } VAEncMiscParameterFrameRate;
1118 1175
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 * (all except VAEncPackedHeaderSlice) which could contain actual frame contents (e.g. pack the frame 1247 * (all except VAEncPackedHeaderSlice) which could contain actual frame contents (e.g. pack the frame
1191 * in VAEncPackedHeaderPicture). */ 1248 * in VAEncPackedHeaderPicture). */
1192 unsigned char skip_frame_flag; 1249 unsigned char skip_frame_flag;
1193 /** \brief The number of frames skipped prior to the current frame. Valid w hen skip_frame_flag = 1. */ 1250 /** \brief The number of frames skipped prior to the current frame. Valid w hen skip_frame_flag = 1. */
1194 unsigned char num_skip_frames; 1251 unsigned char num_skip_frames;
1195 /** \brief When skip_frame_flag = 1, the size of the skipped frames in bits. When skip_frame_flag = 2, 1252 /** \brief When skip_frame_flag = 1, the size of the skipped frames in bits. When skip_frame_flag = 2,
1196 * the size of the current skipped frame that is to be packed/encrypted in bits. */ 1253 * the size of the current skipped frame that is to be packed/encrypted in bits. */
1197 unsigned int size_skip_frames; 1254 unsigned int size_skip_frames;
1198 } VAEncMiscParameterSkipFrame; 1255 } VAEncMiscParameterSkipFrame;
1199 1256
1200 /* 1257 /**
1201 * There will be cases where the bitstream buffer will not have enough room to h old 1258 * \brief Encoding region-of-interest (ROI).
1202 * the data for the entire slice, and the following flags will be used in the sl ice 1259 *
1203 * parameter to signal to the server for the possible cases. 1260 * The encoding ROI can be set through VAEncMiscParameterBufferROI, if the
1204 * If a slice parameter buffer and slice data buffer pair is sent to the server with 1261 * implementation supports ROI input. The ROI set through this structure is
1205 * the slice data partially in the slice data buffer (BEGIN and MIDDLE cases bel ow), 1262 * applicable only to the current frame or field, so must be sent every frame or
1206 * then a slice parameter and data buffer needs to be sent again to complete thi s slice. 1263 * field to be applied. The number of supported ROIs can be queried through the
1264 * VAConfigAttribEncROI. The encoder will use the ROI information to adjust the
1265 * QP values of the MB's that fall within the ROIs.
1266 */
1267 typedef struct _VAEncROI {
1268 /** \brief Defines the ROI boundary in pixels, the driver will map it to
1269 * appropriate codec coding units. It is relative to frame coordinates for
1270 * the frame case and to field coordinates for the field case. */
1271 VARectangle roi_rectangle;
1272 /** \brief When VAConfigAttribRateControl == VA_RC_CQP then roi_value specifes
1273 * the delta QP that will be added on top of the frame level QP. For other
1274 * rate control modes, roi_value specifies the priority of the ROI region
1275 * relative to the non-ROI region. It can be positive (more important) or
1276 * negative (less important) values and is compared with non-ROI region
1277 * (taken as value 0). E.g. ROI region with roi_value -3 is less important
1278 * than the non-ROI region (roi_value implied to be 0) which is less
1279 * important than ROI region with roi_value +2. For overlapping regions, the
1280 * roi_value that is first in the ROI array will have priority. */
1281 char roi_value;
1282 } VAEncROI;
1283
1284 typedef struct _VAEncMiscParameterBufferROI {
1285 /** \brief Number of ROIs being sent.*/
1286 unsigned int num_roi;
1287
1288 /** \brief Valid when VAConfigAttribRateControl != VA_RC_CQP, then the
1289 * encoder's rate control will determine actual delta QPs. Specifies the
1290 * max/min allowed delta QPs. */
1291 char max_delta_qp;
1292 char min_delta_qp;
1293
1294 /** \brief Pointer to a VAEncROI array with num_roi elements. It is relative
1295 * to frame coordinates for the frame case and to field coordinates for the
1296 * field case.*/
1297 VAEncROI* roi;
1298 } VAEncMiscParameterBufferROI;
1299
1300 /**
1301 * There will be cases where the bitstream buffer will not have enough room to
1302 * hold the data for the entire slice, and the following flags will be used in
1303 * the slice parameter to signal to the server for the possible cases. If a
1304 * slice parameter buffer and slice data buffer pair is sent to the server with
1305 * the slice data partially in the slice data buffer (BEGIN and MIDDLE cases
1306 * below), then a slice parameter and data buffer needs to be sent again to
1307 * complete this slice.
1207 */ 1308 */
1208 #define VA_SLICE_DATA_FLAG_ALL 0x00 /* whole slice is in the buffer */ 1309 #define VA_SLICE_DATA_FLAG_ALL 0x00 /* whole slice is in the buffer */
1209 #define VA_SLICE_DATA_FLAG_BEGIN 0x01 /* The beginning of the slice is in the buffer but the end if not */ 1310 #define VA_SLICE_DATA_FLAG_BEGIN 0x01 /* The beginning of the slice is in the buffer but the end if not */
1210 #define VA_SLICE_DATA_FLAG_MIDDLE 0x02 /* Neither beginning nor end of the slice is in the buffer */ 1311 #define VA_SLICE_DATA_FLAG_MIDDLE 0x02 /* Neither beginning nor end of the slice is in the buffer */
1211 #define VA_SLICE_DATA_FLAG_END 0x04 /* end of the slice is in the bu ffer */ 1312 #define VA_SLICE_DATA_FLAG_END 0x04 /* end of the slice is in the bu ffer */
1212 1313
1213 /* Codec-independent Slice Parameter Buffer base */ 1314 /* Codec-independent Slice Parameter Buffer base */
1214 typedef struct _VASliceParameterBufferBase 1315 typedef struct _VASliceParameterBufferBase
1215 { 1316 {
1216 unsigned int slice_data_size; /* number of bytes in the slice data buf fer for this slice */ 1317 unsigned int slice_data_size; /* number of bytes in the slice data buf fer for this slice */
(...skipping 1057 matching lines...) Expand 10 before | Expand all | Expand 10 after
2274 #define VA_FOURCC_YV32 0x32335659 2375 #define VA_FOURCC_YV32 0x32335659
2275 #define VA_FOURCC_Y800 0x30303859 2376 #define VA_FOURCC_Y800 0x30303859
2276 #define VA_FOURCC_IMC3 0x33434D49 2377 #define VA_FOURCC_IMC3 0x33434D49
2277 #define VA_FOURCC_411P 0x50313134 2378 #define VA_FOURCC_411P 0x50313134
2278 #define VA_FOURCC_422H 0x48323234 2379 #define VA_FOURCC_422H 0x48323234
2279 #define VA_FOURCC_422V 0x56323234 2380 #define VA_FOURCC_422V 0x56323234
2280 #define VA_FOURCC_444P 0x50343434 2381 #define VA_FOURCC_444P 0x50343434
2281 #define VA_FOURCC_RGBP 0x50424752 2382 #define VA_FOURCC_RGBP 0x50424752
2282 #define VA_FOURCC_BGRP 0x50524742 2383 #define VA_FOURCC_BGRP 0x50524742
2283 #define VA_FOURCC_411R 0x52313134 /* rotated 411P */ 2384 #define VA_FOURCC_411R 0x52313134 /* rotated 411P */
2385 /**
2386 * Planar YUV 4:2:2.
2387 * 8-bit Y plane, followed by 8-bit 2x1 subsampled V and U planes
2388 */
2389 #define VA_FOURCC_YV16 0x36315659
2390 /**
2391 * 10-bit and 16-bit Planar YUV 4:2:0.
2392 */
2393 #define VA_FOURCC_P010 0x30313050
2394 #define VA_FOURCC_P016 0x36313050
2284 2395
2285 /* byte order */ 2396 /* byte order */
2286 #define VA_LSB_FIRST 1 2397 #define VA_LSB_FIRST 1
2287 #define VA_MSB_FIRST 2 2398 #define VA_MSB_FIRST 2
2288 2399
2289 typedef struct _VAImageFormat 2400 typedef struct _VAImageFormat
2290 { 2401 {
2291 unsigned int fourcc; 2402 unsigned int fourcc;
2292 unsigned int byte_order; /* VA_LSB_FIRST, VA_MSB_FIRST */ 2403 unsigned int byte_order; /* VA_LSB_FIRST, VA_MSB_FIRST */
2293 unsigned int bits_per_pixel; 2404 unsigned int bits_per_pixel;
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
2586 /** 2697 /**
2587 * vaDeassociateSubpicture removes the association of the subpicture with target _surfaces. 2698 * vaDeassociateSubpicture removes the association of the subpicture with target _surfaces.
2588 */ 2699 */
2589 VAStatus vaDeassociateSubpicture ( 2700 VAStatus vaDeassociateSubpicture (
2590 VADisplay dpy, 2701 VADisplay dpy,
2591 VASubpictureID subpicture, 2702 VASubpictureID subpicture,
2592 VASurfaceID *target_surfaces, 2703 VASurfaceID *target_surfaces,
2593 int num_surfaces 2704 int num_surfaces
2594 ); 2705 );
2595 2706
2596 typedef struct _VARectangle
2597 {
2598 short x;
2599 short y;
2600 unsigned short width;
2601 unsigned short height;
2602 } VARectangle;
2603
2604 /** 2707 /**
2605 * Display attributes 2708 * Display attributes
2606 * Display attributes are used to control things such as contrast, hue, saturati on, 2709 * Display attributes are used to control things such as contrast, hue, saturati on,
2607 * brightness etc. in the rendering process. The application can query what 2710 * brightness etc. in the rendering process. The application can query what
2608 * attributes are supported by the driver, and then set the appropriate attribut es 2711 * attributes are supported by the driver, and then set the appropriate attribut es
2609 * before calling vaPutSurface() 2712 * before calling vaPutSurface()
2610 */ 2713 */
2611 /* PowerVR IEP Lite attributes */ 2714 /* PowerVR IEP Lite attributes */
2612 typedef enum 2715 typedef enum
2613 { 2716 {
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
2833 /** \brief RefPicSetLtCurr of HEVC spec variable 2936 /** \brief RefPicSetLtCurr of HEVC spec variable
2834 * Number of ReferenceFrames[] entries with this bit set equals 2937 * Number of ReferenceFrames[] entries with this bit set equals
2835 * NumPocLtCurr. 2938 * NumPocLtCurr.
2836 */ 2939 */
2837 #define VA_PICTURE_HEVC_RPS_LT_CURR 0x00000040 2940 #define VA_PICTURE_HEVC_RPS_LT_CURR 0x00000040
2838 2941
2839 #include <va/va_dec_hevc.h> 2942 #include <va/va_dec_hevc.h>
2840 #include <va/va_dec_jpeg.h> 2943 #include <va/va_dec_jpeg.h>
2841 #include <va/va_dec_vp8.h> 2944 #include <va/va_dec_vp8.h>
2842 #include <va/va_dec_vp9.h> 2945 #include <va/va_dec_vp9.h>
2946 #include <va/va_enc_h264.h>
2843 #include <va/va_enc_hevc.h> 2947 #include <va/va_enc_hevc.h>
2844 #include <va/va_enc_h264.h>
2845 #include <va/va_enc_jpeg.h> 2948 #include <va/va_enc_jpeg.h>
2846 #include <va/va_enc_mpeg2.h> 2949 #include <va/va_enc_mpeg2.h>
2847 #include <va/va_enc_vp8.h> 2950 #include <va/va_enc_vp8.h>
2951 #include <va/va_enc_vp9.h>
2848 #include <va/va_vpp.h> 2952 #include <va/va_vpp.h>
2849 2953
2850 /**@}*/ 2954 /**@}*/
2851 2955
2852 #ifdef __cplusplus 2956 #ifdef __cplusplus
2853 } 2957 }
2854 #endif 2958 #endif
2855 2959
2856 #endif /* _VA_H_ */ 2960 #endif /* _VA_H_ */
OLDNEW
« no previous file with comments | « third_party/libva/README.chromium ('k') | third_party/libva/va/va_dec_vp9.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698