diff options
author | Arun Kumar K <arun.kk@samsung.com> | 2012-10-03 21:19:06 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-10-05 21:42:17 -0400 |
commit | 2e81dde94316dfaa19f0b6f9d4131ef7eaf124a3 (patch) | |
tree | 729db0ebf3bdb55540b89c4410a35811f1bbdfc7 | |
parent | 4d08f670e63200cc092724de8c95f81df606b1a5 (diff) |
[media] v4l: Add control definitions for new H264 encoder features
New controls are added for supporting H264 encoding features like:
- MVC frame packing,
- flexible macroblock ordering,
- arbitrary slice ordering,
- hierarchical coding.
Signed-off-by: Jeongtae Park <jtp.park@samsung.com>
Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
Acked-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | Documentation/DocBook/media/v4l/controls.xml | 268 | ||||
-rw-r--r-- | drivers/media/v4l2-core/v4l2-ctrls.c | 42 | ||||
-rw-r--r-- | include/linux/v4l2-controls.h | 41 |
3 files changed, 350 insertions, 1 deletions
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index a84a08ca51dc..7fe5be1d3bbb 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -1586,7 +1586,6 @@ frame counter of the frame that is currently displayed (decoded). This value is | |||
1586 | the decoder is started.</entry> | 1586 | the decoder is started.</entry> |
1587 | </row> | 1587 | </row> |
1588 | 1588 | ||
1589 | |||
1590 | <row><entry></entry></row> | 1589 | <row><entry></entry></row> |
1591 | <row> | 1590 | <row> |
1592 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant> </entry> | 1591 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant> </entry> |
@@ -2270,6 +2269,14 @@ Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry> | |||
2270 | </row> | 2269 | </row> |
2271 | 2270 | ||
2272 | <row><entry></entry></row> | 2271 | <row><entry></entry></row> |
2272 | <row id="v4l2-mpeg-video-vbv-delay"> | ||
2273 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_DELAY</constant> </entry> | ||
2274 | <entry>integer</entry> | ||
2275 | </row><row><entry spanname="descr">Sets the initial delay in milliseconds for | ||
2276 | VBV buffer control.</entry> | ||
2277 | </row> | ||
2278 | |||
2279 | <row><entry></entry></row> | ||
2273 | <row> | 2280 | <row> |
2274 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant> </entry> | 2281 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant> </entry> |
2275 | <entry>integer</entry> | 2282 | <entry>integer</entry> |
@@ -2334,6 +2341,265 @@ Applicable to the MPEG4 decoder.</entry> | |||
2334 | </row><row><entry spanname="descr">vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder.</entry> | 2341 | </row><row><entry spanname="descr">vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder.</entry> |
2335 | </row> | 2342 | </row> |
2336 | 2343 | ||
2344 | <row><entry></entry></row> | ||
2345 | <row> | ||
2346 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING</constant> </entry> | ||
2347 | <entry>boolean</entry> | ||
2348 | </row> | ||
2349 | <row><entry spanname="descr">Enable generation of frame packing supplemental enhancement information in the encoded bitstream. | ||
2350 | The frame packing SEI message contains the arrangement of L and R planes for 3D viewing. Applicable to the H264 encoder.</entry> | ||
2351 | </row> | ||
2352 | |||
2353 | <row><entry></entry></row> | ||
2354 | <row> | ||
2355 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0</constant> </entry> | ||
2356 | <entry>boolean</entry> | ||
2357 | </row> | ||
2358 | <row><entry spanname="descr">Sets current frame as frame0 in frame packing SEI. | ||
2359 | Applicable to the H264 encoder.</entry> | ||
2360 | </row> | ||
2361 | |||
2362 | <row><entry></entry></row> | ||
2363 | <row id="v4l2-mpeg-video-h264-sei-fp-arrangement-type"> | ||
2364 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE</constant> </entry> | ||
2365 | <entry>enum v4l2_mpeg_video_h264_sei_fp_arrangement_type</entry> | ||
2366 | </row> | ||
2367 | <row><entry spanname="descr">Frame packing arrangement type for H264 SEI. | ||
2368 | Applicable to the H264 encoder. | ||
2369 | Possible values are:</entry> | ||
2370 | </row> | ||
2371 | <row> | ||
2372 | <entrytbl spanname="descr" cols="2"> | ||
2373 | <tbody valign="top"> | ||
2374 | <row> | ||
2375 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD</constant> </entry> | ||
2376 | <entry>Pixels are alternatively from L and R.</entry> | ||
2377 | </row> | ||
2378 | <row> | ||
2379 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN</constant> </entry> | ||
2380 | <entry>L and R are interlaced by column.</entry> | ||
2381 | </row> | ||
2382 | <row> | ||
2383 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW</constant> </entry> | ||
2384 | <entry>L and R are interlaced by row.</entry> | ||
2385 | </row> | ||
2386 | <row> | ||
2387 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE</constant> </entry> | ||
2388 | <entry>L is on the left, R on the right.</entry> | ||
2389 | </row> | ||
2390 | <row> | ||
2391 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM</constant> </entry> | ||
2392 | <entry>L is on top, R on bottom.</entry> | ||
2393 | </row> | ||
2394 | <row> | ||
2395 | <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL</constant> </entry> | ||
2396 | <entry>One view per frame.</entry> | ||
2397 | </row> | ||
2398 | </tbody> | ||
2399 | </entrytbl> | ||
2400 | </row> | ||
2401 | |||
2402 | <row><entry></entry></row> | ||
2403 | <row> | ||
2404 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO</constant> </entry> | ||
2405 | <entry>boolean</entry> | ||
2406 | </row> | ||
2407 | <row><entry spanname="descr">Enables flexible macroblock ordering in the encoded bitstream. It is a technique | ||
2408 | used for restructuring the ordering of macroblocks in pictures. Applicable to the H264 encoder.</entry> | ||
2409 | </row> | ||
2410 | |||
2411 | <row><entry></entry></row> | ||
2412 | <row id="v4l2-mpeg-video-h264-fmo-map-type"> | ||
2413 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE</constant> </entry> | ||
2414 | <entry>enum v4l2_mpeg_video_h264_fmo_map_type</entry> | ||
2415 | </row> | ||
2416 | <row><entry spanname="descr">When using FMO, the map type divides the image in different scan patterns of macroblocks. | ||
2417 | Applicable to the H264 encoder. | ||
2418 | Possible values are:</entry> | ||
2419 | </row> | ||
2420 | <row> | ||
2421 | <entrytbl spanname="descr" cols="2"> | ||
2422 | <tbody valign="top"> | ||
2423 | <row> | ||
2424 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES</constant> </entry> | ||
2425 | <entry>Slices are interleaved one after other with macroblocks in run length order.</entry> | ||
2426 | </row> | ||
2427 | <row> | ||
2428 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES</constant> </entry> | ||
2429 | <entry>Scatters the macroblocks based on a mathematical function known to both encoder and decoder.</entry> | ||
2430 | </row> | ||
2431 | <row> | ||
2432 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER</constant> </entry> | ||
2433 | <entry>Macroblocks arranged in rectangular areas or regions of interest.</entry> | ||
2434 | </row> | ||
2435 | <row> | ||
2436 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT</constant> </entry> | ||
2437 | <entry>Slice groups grow in a cyclic way from centre to outwards.</entry> | ||
2438 | </row> | ||
2439 | <row> | ||
2440 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN</constant> </entry> | ||
2441 | <entry>Slice groups grow in raster scan pattern from left to right.</entry> | ||
2442 | </row> | ||
2443 | <row> | ||
2444 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN</constant> </entry> | ||
2445 | <entry>Slice groups grow in wipe scan pattern from top to bottom.</entry> | ||
2446 | </row> | ||
2447 | <row> | ||
2448 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT</constant> </entry> | ||
2449 | <entry>User defined map type.</entry> | ||
2450 | </row> | ||
2451 | </tbody> | ||
2452 | </entrytbl> | ||
2453 | </row> | ||
2454 | |||
2455 | <row><entry></entry></row> | ||
2456 | <row> | ||
2457 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP</constant> </entry> | ||
2458 | <entry>integer</entry> | ||
2459 | </row> | ||
2460 | <row><entry spanname="descr">Number of slice groups in FMO. | ||
2461 | Applicable to the H264 encoder.</entry> | ||
2462 | </row> | ||
2463 | |||
2464 | <row><entry></entry></row> | ||
2465 | <row id="v4l2-mpeg-video-h264-fmo-change-direction"> | ||
2466 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION</constant> </entry> | ||
2467 | <entry>enum v4l2_mpeg_video_h264_fmo_change_dir</entry> | ||
2468 | </row> | ||
2469 | <row><entry spanname="descr">Specifies a direction of the slice group change for raster and wipe maps. | ||
2470 | Applicable to the H264 encoder. | ||
2471 | Possible values are:</entry> | ||
2472 | </row> | ||
2473 | <row> | ||
2474 | <entrytbl spanname="descr" cols="2"> | ||
2475 | <tbody valign="top"> | ||
2476 | <row> | ||
2477 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT</constant> </entry> | ||
2478 | <entry>Raster scan or wipe right.</entry> | ||
2479 | </row> | ||
2480 | <row> | ||
2481 | <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT</constant> </entry> | ||
2482 | <entry>Reverse raster scan or wipe left.</entry> | ||
2483 | </row> | ||
2484 | </tbody> | ||
2485 | </entrytbl> | ||
2486 | </row> | ||
2487 | |||
2488 | <row><entry></entry></row> | ||
2489 | <row> | ||
2490 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE</constant> </entry> | ||
2491 | <entry>integer</entry> | ||
2492 | </row> | ||
2493 | <row><entry spanname="descr">Specifies the size of the first slice group for raster and wipe map. | ||
2494 | Applicable to the H264 encoder.</entry> | ||
2495 | </row> | ||
2496 | |||
2497 | <row><entry></entry></row> | ||
2498 | <row> | ||
2499 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH</constant> </entry> | ||
2500 | <entry>integer</entry> | ||
2501 | </row> | ||
2502 | <row><entry spanname="descr">Specifies the number of consecutive macroblocks for the interleaved map. | ||
2503 | Applicable to the H264 encoder.</entry> | ||
2504 | </row> | ||
2505 | |||
2506 | <row><entry></entry></row> | ||
2507 | <row> | ||
2508 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO</constant> </entry> | ||
2509 | <entry>boolean</entry> | ||
2510 | </row> | ||
2511 | <row><entry spanname="descr">Enables arbitrary slice ordering in encoded bitstream. | ||
2512 | Applicable to the H264 encoder.</entry> | ||
2513 | </row> | ||
2514 | |||
2515 | <row><entry></entry></row> | ||
2516 | <row> | ||
2517 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER</constant> </entry> | ||
2518 | <entry>integer</entry> | ||
2519 | </row><row><entry spanname="descr">Specifies the slice order in ASO. Applicable to the H264 encoder. | ||
2520 | The supplied 32-bit integer is interpreted as follows (bit | ||
2521 | 0 = least significant bit):</entry> | ||
2522 | </row> | ||
2523 | <row> | ||
2524 | <entrytbl spanname="descr" cols="2"> | ||
2525 | <tbody valign="top"> | ||
2526 | <row> | ||
2527 | <entry>Bit 0:15</entry> | ||
2528 | <entry>Slice ID</entry> | ||
2529 | </row> | ||
2530 | <row> | ||
2531 | <entry>Bit 16:32</entry> | ||
2532 | <entry>Slice position or order</entry> | ||
2533 | </row> | ||
2534 | </tbody> | ||
2535 | </entrytbl> | ||
2536 | </row> | ||
2537 | |||
2538 | <row><entry></entry></row> | ||
2539 | <row> | ||
2540 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING</constant> </entry> | ||
2541 | <entry>boolean</entry> | ||
2542 | </row> | ||
2543 | <row><entry spanname="descr">Enables H264 hierarchical coding. | ||
2544 | Applicable to the H264 encoder.</entry> | ||
2545 | </row> | ||
2546 | |||
2547 | <row><entry></entry></row> | ||
2548 | <row id="v4l2-mpeg-video-h264-hierarchical-coding-type"> | ||
2549 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE</constant> </entry> | ||
2550 | <entry>enum v4l2_mpeg_video_h264_hierarchical_coding_type</entry> | ||
2551 | </row> | ||
2552 | <row><entry spanname="descr">Specifies the hierarchical coding type. | ||
2553 | Applicable to the H264 encoder. | ||
2554 | Possible values are:</entry> | ||
2555 | </row> | ||
2556 | <row> | ||
2557 | <entrytbl spanname="descr" cols="2"> | ||
2558 | <tbody valign="top"> | ||
2559 | <row> | ||
2560 | <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B</constant> </entry> | ||
2561 | <entry>Hierarchical B coding.</entry> | ||
2562 | </row> | ||
2563 | <row> | ||
2564 | <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P</constant> </entry> | ||
2565 | <entry>Hierarchical P coding.</entry> | ||
2566 | </row> | ||
2567 | </tbody> | ||
2568 | </entrytbl> | ||
2569 | </row> | ||
2570 | |||
2571 | <row><entry></entry></row> | ||
2572 | <row> | ||
2573 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER</constant> </entry> | ||
2574 | <entry>integer</entry> | ||
2575 | </row> | ||
2576 | <row><entry spanname="descr">Specifies the number of hierarchical coding layers. | ||
2577 | Applicable to the H264 encoder.</entry> | ||
2578 | </row> | ||
2579 | |||
2580 | <row><entry></entry></row> | ||
2581 | <row> | ||
2582 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP</constant> </entry> | ||
2583 | <entry>integer</entry> | ||
2584 | </row><row><entry spanname="descr">Specifies a user defined QP for each layer. Applicable to the H264 encoder. | ||
2585 | The supplied 32-bit integer is interpreted as follows (bit | ||
2586 | 0 = least significant bit):</entry> | ||
2587 | </row> | ||
2588 | <row> | ||
2589 | <entrytbl spanname="descr" cols="2"> | ||
2590 | <tbody valign="top"> | ||
2591 | <row> | ||
2592 | <entry>Bit 0:15</entry> | ||
2593 | <entry>QP value</entry> | ||
2594 | </row> | ||
2595 | <row> | ||
2596 | <entry>Bit 16:32</entry> | ||
2597 | <entry>Layer number</entry> | ||
2598 | </row> | ||
2599 | </tbody> | ||
2600 | </entrytbl> | ||
2601 | </row> | ||
2602 | |||
2337 | </tbody> | 2603 | </tbody> |
2338 | </tgroup> | 2604 | </tgroup> |
2339 | </table> | 2605 | </table> |
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 207bcd8dee11..f6ee201d9347 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c | |||
@@ -384,6 +384,25 @@ const char * const *v4l2_ctrl_get_menu(u32 id) | |||
384 | "Extended SAR", | 384 | "Extended SAR", |
385 | NULL, | 385 | NULL, |
386 | }; | 386 | }; |
387 | static const char * const h264_fp_arrangement_type[] = { | ||
388 | "Checkerboard", | ||
389 | "Column", | ||
390 | "Row", | ||
391 | "Side by Side", | ||
392 | "Top Bottom", | ||
393 | "Temporal", | ||
394 | NULL, | ||
395 | }; | ||
396 | static const char * const h264_fmo_map_type[] = { | ||
397 | "Interleaved Slices", | ||
398 | "Scattered Slices", | ||
399 | "Foreground with Leftover", | ||
400 | "Box Out", | ||
401 | "Raster Scan", | ||
402 | "Wipe Scan", | ||
403 | "Explicit", | ||
404 | NULL, | ||
405 | }; | ||
387 | static const char * const mpeg_mpeg4_level[] = { | 406 | static const char * const mpeg_mpeg4_level[] = { |
388 | "0", | 407 | "0", |
389 | "0b", | 408 | "0b", |
@@ -508,6 +527,10 @@ const char * const *v4l2_ctrl_get_menu(u32 id) | |||
508 | return h264_profile; | 527 | return h264_profile; |
509 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: | 528 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: |
510 | return vui_sar_idc; | 529 | return vui_sar_idc; |
530 | case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE: | ||
531 | return h264_fp_arrangement_type; | ||
532 | case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE: | ||
533 | return h264_fmo_map_type; | ||
511 | case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL: | 534 | case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL: |
512 | return mpeg_mpeg4_level; | 535 | return mpeg_mpeg4_level; |
513 | case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE: | 536 | case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE: |
@@ -643,6 +666,22 @@ const char *v4l2_ctrl_get_name(u32 id) | |||
643 | case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH: return "Horizontal Size of SAR"; | 666 | case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH: return "Horizontal Size of SAR"; |
644 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE: return "Aspect Ratio VUI Enable"; | 667 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE: return "Aspect Ratio VUI Enable"; |
645 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: return "VUI Aspect Ratio IDC"; | 668 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: return "VUI Aspect Ratio IDC"; |
669 | case V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING: return "H264 Enable Frame Packing SEI"; | ||
670 | case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0: return "H264 Set Curr. Frame as Frame0"; | ||
671 | case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE: return "H264 FP Arrangement Type"; | ||
672 | case V4L2_CID_MPEG_VIDEO_H264_FMO: return "H264 Flexible MB Ordering"; | ||
673 | case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE: return "H264 Map Type for FMO"; | ||
674 | case V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP: return "H264 FMO Number of Slice Groups"; | ||
675 | case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION: return "H264 FMO Direction of Change"; | ||
676 | case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE: return "H264 FMO Size of 1st Slice Grp"; | ||
677 | case V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH: return "H264 FMO No. of Consecutive MBs"; | ||
678 | case V4L2_CID_MPEG_VIDEO_H264_ASO: return "H264 Arbitrary Slice Ordering"; | ||
679 | case V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER: return "H264 ASO Slice Order"; | ||
680 | case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING: return "Enable H264 Hierarchical Coding"; | ||
681 | case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE: return "H264 Hierarchical Coding Type"; | ||
682 | case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER:return "H264 Number of HC Layers"; | ||
683 | case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP: | ||
684 | return "H264 Set QP Value for HC Layers"; | ||
646 | case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP: return "MPEG4 I-Frame QP Value"; | 685 | case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP: return "MPEG4 I-Frame QP Value"; |
647 | case V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP: return "MPEG4 P-Frame QP Value"; | 686 | case V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP: return "MPEG4 P-Frame QP Value"; |
648 | case V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP: return "MPEG4 B-Frame QP Value"; | 687 | case V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP: return "MPEG4 B-Frame QP Value"; |
@@ -657,6 +696,7 @@ const char *v4l2_ctrl_get_name(u32 id) | |||
657 | case V4L2_CID_MPEG_VIDEO_VBV_SIZE: return "VBV Buffer Size"; | 696 | case V4L2_CID_MPEG_VIDEO_VBV_SIZE: return "VBV Buffer Size"; |
658 | case V4L2_CID_MPEG_VIDEO_DEC_PTS: return "Video Decoder PTS"; | 697 | case V4L2_CID_MPEG_VIDEO_DEC_PTS: return "Video Decoder PTS"; |
659 | case V4L2_CID_MPEG_VIDEO_DEC_FRAME: return "Video Decoder Frame Count"; | 698 | case V4L2_CID_MPEG_VIDEO_DEC_FRAME: return "Video Decoder Frame Count"; |
699 | case V4L2_CID_MPEG_VIDEO_VBV_DELAY: return "Initial Delay for VBV Control"; | ||
660 | 700 | ||
661 | /* CAMERA controls */ | 701 | /* CAMERA controls */ |
662 | /* Keep the order of the 'case's the same as in videodev2.h! */ | 702 | /* Keep the order of the 'case's the same as in videodev2.h! */ |
@@ -854,6 +894,8 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, | |||
854 | case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE: | 894 | case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE: |
855 | case V4L2_CID_MPEG_VIDEO_H264_PROFILE: | 895 | case V4L2_CID_MPEG_VIDEO_H264_PROFILE: |
856 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: | 896 | case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC: |
897 | case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE: | ||
898 | case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE: | ||
857 | case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL: | 899 | case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL: |
858 | case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE: | 900 | case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE: |
859 | case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: | 901 | case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: |
diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h index e1b36809c21b..f56c945cecd4 100644 --- a/include/linux/v4l2-controls.h +++ b/include/linux/v4l2-controls.h | |||
@@ -349,6 +349,7 @@ enum v4l2_mpeg_video_multi_slice_mode { | |||
349 | #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222) | 349 | #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222) |
350 | #define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223) | 350 | #define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223) |
351 | #define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224) | 351 | #define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224) |
352 | #define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225) | ||
352 | 353 | ||
353 | #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) | 354 | #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) |
354 | #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) | 355 | #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) |
@@ -439,6 +440,46 @@ enum v4l2_mpeg_video_h264_vui_sar_idc { | |||
439 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16, | 440 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16, |
440 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17, | 441 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17, |
441 | }; | 442 | }; |
443 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE+368) | ||
444 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE+369) | ||
445 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE+370) | ||
446 | enum v4l2_mpeg_video_h264_sei_fp_arrangement_type { | ||
447 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0, | ||
448 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1, | ||
449 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2, | ||
450 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3, | ||
451 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4, | ||
452 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5, | ||
453 | }; | ||
454 | #define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE+371) | ||
455 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE+372) | ||
456 | enum v4l2_mpeg_video_h264_fmo_map_type { | ||
457 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0, | ||
458 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1, | ||
459 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2, | ||
460 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3, | ||
461 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4, | ||
462 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5, | ||
463 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6, | ||
464 | }; | ||
465 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE+373) | ||
466 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE+374) | ||
467 | enum v4l2_mpeg_video_h264_fmo_change_dir { | ||
468 | V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0, | ||
469 | V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1, | ||
470 | }; | ||
471 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE+375) | ||
472 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE+376) | ||
473 | #define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE+377) | ||
474 | #define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE+378) | ||
475 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE+379) | ||
476 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE+380) | ||
477 | enum v4l2_mpeg_video_h264_hierarchical_coding_type { | ||
478 | V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0, | ||
479 | V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1, | ||
480 | }; | ||
481 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381) | ||
482 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382) | ||
442 | #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400) | 483 | #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400) |
443 | #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401) | 484 | #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401) |
444 | #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402) | 485 | #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402) |