aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Kumar K <arun.kk@samsung.com>2012-10-03 21:19:06 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-10-05 21:42:17 -0400
commit2e81dde94316dfaa19f0b6f9d4131ef7eaf124a3 (patch)
tree729db0ebf3bdb55540b89c4410a35811f1bbdfc7
parent4d08f670e63200cc092724de8c95f81df606b1a5 (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.xml268
-rw-r--r--drivers/media/v4l2-core/v4l2-ctrls.c42
-rw-r--r--include/linux/v4l2-controls.h41
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
1586the decoder is started.</entry> 1586the 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>&nbsp;</entry> 1591 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant>&nbsp;</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>&nbsp;</entry>
2274 <entry>integer</entry>
2275 </row><row><entry spanname="descr">Sets the initial delay in milliseconds for
2276VBV 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>&nbsp;</entry> 2281 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant>&nbsp;</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>&nbsp;</entry>
2347 <entry>boolean</entry>
2348 </row>
2349 <row><entry spanname="descr">Enable generation of frame packing supplemental enhancement information in the encoded bitstream.
2350The 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>&nbsp;</entry>
2356 <entry>boolean</entry>
2357 </row>
2358 <row><entry spanname="descr">Sets current frame as frame0 in frame packing SEI.
2359Applicable 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>&nbsp;</entry>
2365 <entry>enum&nbsp;v4l2_mpeg_video_h264_sei_fp_arrangement_type</entry>
2366 </row>
2367 <row><entry spanname="descr">Frame packing arrangement type for H264 SEI.
2368Applicable to the H264 encoder.
2369Possible 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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</entry>
2405 <entry>boolean</entry>
2406 </row>
2407 <row><entry spanname="descr">Enables flexible macroblock ordering in the encoded bitstream. It is a technique
2408used 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>&nbsp;</entry>
2414 <entry>enum&nbsp;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.
2417Applicable to the H264 encoder.
2418Possible 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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</entry>
2458 <entry>integer</entry>
2459 </row>
2460 <row><entry spanname="descr">Number of slice groups in FMO.
2461Applicable 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>&nbsp;</entry>
2467 <entry>enum&nbsp;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.
2470Applicable to the H264 encoder.
2471Possible 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>&nbsp;</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>&nbsp;</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>&nbsp;</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.
2494Applicable 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>&nbsp;</entry>
2500 <entry>integer</entry>
2501 </row>
2502 <row><entry spanname="descr">Specifies the number of consecutive macroblocks for the interleaved map.
2503Applicable 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>&nbsp;</entry>
2509 <entry>boolean</entry>
2510 </row>
2511 <row><entry spanname="descr">Enables arbitrary slice ordering in encoded bitstream.
2512Applicable 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>&nbsp;</entry>
2518 <entry>integer</entry>
2519 </row><row><entry spanname="descr">Specifies the slice order in ASO. Applicable to the H264 encoder.
2520The supplied 32-bit integer is interpreted as follows (bit
25210 = 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>&nbsp;</entry>
2541 <entry>boolean</entry>
2542 </row>
2543 <row><entry spanname="descr">Enables H264 hierarchical coding.
2544Applicable 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>&nbsp;</entry>
2550 <entry>enum&nbsp;v4l2_mpeg_video_h264_hierarchical_coding_type</entry>
2551 </row>
2552 <row><entry spanname="descr">Specifies the hierarchical coding type.
2553Applicable to the H264 encoder.
2554Possible 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>&nbsp;</entry>
2561 <entry>Hierarchical B coding.</entry>
2562 </row>
2563 <row>
2564 <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P</constant>&nbsp;</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>&nbsp;</entry>
2574 <entry>integer</entry>
2575 </row>
2576 <row><entry spanname="descr">Specifies the number of hierarchical coding layers.
2577Applicable 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>&nbsp;</entry>
2583 <entry>integer</entry>
2584 </row><row><entry spanname="descr">Specifies a user defined QP for each layer. Applicable to the H264 encoder.
2585The supplied 32-bit integer is interpreted as follows (bit
25860 = 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)
446enum 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)
456enum 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)
467enum 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)
477enum 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)