This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:如何修改 v4l2h265enc 的输出映像大小

Guru**** 2416270 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1531860/tda4vm-how-to-modify-the-output-image-size-of-v4l2h265enc

器件型号:TDA4VM

工具/软件:

如果直接使用 v4l2 编码、则 可以使用以下方法设置输出图像大小:


结构 v4l2_selection;
Selection.type =V4L2_BUF TYPE_VIDEO_OUTPUT_ MPLANE;
Selection.target = V4L2_SEL TGT_crop;
Selection.r.left =20;
Selection.r.top =20;
Selection.r.width = w;
Selection.r.height = h;
ioctl (FD、VIDIOC S 选择、&selection);

、现在我正在使用 v4l2h265enc 编码、如何设置输出映像的大小?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damon:

    您能否通读以下文档: https://www.kernel.org/doc/html/next/userspace-api/media/v4l/dev-encoder.html 

    如果您使用的是 GStreamer、能否通读本文档: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/11_00_00_08/exports/docs/linux/Foundational_Components_Multimedia_D5520_VXE384.html 

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我n`t   在 以下文档中找到如何进行设置:https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/11_00_00_08/exports/docs/linux/Foundational_Components_Multimedia_D5520_VXE384.html 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damon:

    使用 GStreamer、您只需设置上限即可设置图像尺寸/分辨率。

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用 720*1080 nv12 图像,v4l2h265enc 设置 输出 IO 模式:5,但 报告错误。说我的 buf 不可用、我使用 768*1080 nv12 图像、无错误。

    因此、我 理解这是一个编码器对齐问题。我需要一种设置编码器裁剪的方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damon:

    您能否发送管道和错误日志? 编码器不会进行裁剪、它只是对给定的任何内容进行编码。 您可以在将图像/视频提供给编码器之前对其进行裁剪。

    我使用 720*1080 nv12 图像,v4l2h265enc 设置 输出 IO 模式:5,但 报告错误。说我的 buf 不可用、我使用 768*1080 nv12 图像、无错误。

    [/报价]

    抱歉、我不明白您在这里想说什么。

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用以下方法、v4l2 支持编码和图像裁剪。我注意到 gstreamer、的源代码中有类似的设置、但我找不到公开的函数要更改它。

    结构 v4l2_selection;
    Selection.type =V4L2_BUF TYPE_VIDEO_OUTPUT_ MPLANE;
    Selection.target = V4L2_SEL TGT_crop;
    Selection.r.left =20;
    Selection.r.top =20;
    Selection.r.width = w;
    Selection.r.height = h;
    ioctl (FD、VIDIOC S 选择、&selection);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damon:

    如果运行 GST-CHECK-1.0 v4l2h265enc、则可以看到编码插件的可能参数/字段。 没有裁剪图像的方法。

    Element Properties:
    
      capture-io-mode     : Capture I/O mode (matches src pad)
                            flags: readable, writable
                            Enum "GstV4l2IOMode" Default: 0, "auto"
                               (0): auto             - GST_V4L2_IO_AUTO
                               (1): rw               - GST_V4L2_IO_RW
                               (2): mmap             - GST_V4L2_IO_MMAP
                               (3): userptr          - GST_V4L2_IO_USERPTR
                               (4): dmabuf           - GST_V4L2_IO_DMABUF
                               (5): dmabuf-import    - GST_V4L2_IO_DMABUF_IMPORT
      
      device              : Device location
                            flags: readable
                            String. Default: "/dev/video1"
      
      device-fd           : File descriptor of the device
                            flags: readable
                            Integer. Range: -1 - 2147483647 Default: -1 
      
      device-name         : Name of the device
                            flags: readable
                            String. Default: null
      
      extra-controls      : Extra v4l2 controls (CIDs) for the device
                            flags: readable, writable
                            Boxed pointer of type "GstStructure"
      
      min-force-key-unit-interval: Minimum interval between force-keyunit requests in nanoseconds
                            flags: readable, writable
                            Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
      
      name                : The name of the object
                            flags: readable, writable
                            String. Default: "v4l2h265enc0"
      
      output-io-mode      : Output side I/O mode (matches sink pad)
                            flags: readable, writable
                            Enum "GstV4l2IOMode" Default: 0, "auto"
                               (0): auto             - GST_V4L2_IO_AUTO
                               (1): rw               - GST_V4L2_IO_RW
                               (2): mmap             - GST_V4L2_IO_MMAP
                               (3): userptr          - GST_V4L2_IO_USERPTR
                               (4): dmabuf           - GST_V4L2_IO_DMABUF
                               (5): dmabuf-import    - GST_V4L2_IO_DMABUF_IMPORT
      
      parent              : The parent of the object
                            flags: readable, writable
                            Object of type "GstObject"
      
      qos                 : Handle Quality-of-Service events from downstream
                            flags: readable, writable
                            Boolean. Default: false

    可能的 v4l2 控件:

    $ v4l2-ctl --list-ctrls -d /dev/video1
    
    User Controls
    
                    horizontal_flip 0x00980914 (bool)   : default=0 value=0
                      vertical_flip 0x00980915 (bool)   : default=0 value=0
                             rotate 0x00980922 (int)    : min=0 max=270 step=90 default=0 value=0 flags=modify-layout
       min_number_of_output_buffers 0x00980928 (int)    : min=1 max=32 step=1 default=1 value=1 flags=read-only
    
    Codec Controls
    
                     video_gop_size 0x009909cb (int)    : min=0 max=2047 step=1 default=0 value=0
                 video_bitrate_mode 0x009909ce (menu)   : min=0 max=1 default=1 value=1 (Constant Bitrate) flags=update
                      video_bitrate 0x009909cf (int)    : min=0 max=700000000 step=1 default=0 value=0
    frame_level_rate_control_enable 0x009909d7 (bool)   : default=0 value=0
         h264_mb_level_rate_control 0x009909da (bool)   : default=0 value=0
           number_of_mbs_in_a_slice 0x009909dc (int)    : min=0 max=65535 step=1 default=0 value=0
          slice_partitioning_method 0x009909dd (menu)   : min=0 max=1 default=0 value=0 (Single)
                    vbv_buffer_size 0x009909de (int)    : min=10 max=3000 step=1 default=1000 value=1000
                    force_key_frame 0x009909e5 (button) : value=0 flags=write-only, execute-on-write
    generate_access_unit_delimiters 0x009909e7 (bool)   : default=1 value=1
              h264_i_frame_qp_value 0x00990a5e (int)    : min=0 max=63 step=1 default=30 value=30
              h264_minimum_qp_value 0x00990a61 (int)    : min=0 max=63 step=1 default=8 value=8
              h264_maximum_qp_value 0x00990a62 (int)    : min=0 max=63 step=1 default=51 value=51
          h264_8x8_transform_enable 0x00990a63 (bool)   : default=0 value=0
                  h264_entropy_mode 0x00990a65 (menu)   : min=0 max=1 default=0 value=0 (CAVLC)
                h264_i_frame_period 0x00990a66 (int)    : min=0 max=2047 step=1 default=0 value=0
                         h264_level 0x00990a67 (menu)   : min=0 max=15 default=0 value=0 (1)
      h264_loop_filter_alpha_offset 0x00990a68 (int)    : min=-6 max=6 step=1 default=0 value=0
       h264_loop_filter_beta_offset 0x00990a69 (int)    : min=-6 max=6 step=1 default=0 value=0
              h264_loop_filter_mode 0x00990a6a (menu)   : min=0 max=2 default=0 value=0 (Enabled)
                       h264_profile 0x00990a6b (menu)   : min=0 max=7 default=0 value=0 (Baseline)
        h264_constrained_intra_pred 0x00990a7f (int)    : min=0 max=1 step=1 default=0 value=0
        h264_chroma_qp_index_offset 0x00990a80 (int)    : min=-12 max=12 step=1 default=0 value=0
              hevc_minimum_qp_value 0x00990b58 (int)    : min=0 max=63 step=1 default=8 value=8
              hevc_maximum_qp_value 0x00990b59 (int)    : min=0 max=63 step=1 default=51 value=51
              hevc_i_frame_qp_value 0x00990b5a (int)    : min=0 max=63 step=1 default=30 value=30
                       hevc_profile 0x00990b67 (menu)   : min=0 max=2 default=0 value=0 (Main)
                         hevc_level 0x00990b68 (menu)   : min=0 max=8 default=0 value=0 (1)
                   hevc_loop_filter 0x00990b6c (menu)   : min=0 max=2 default=1 value=1 (Enabled)
       hevc_loop_filter_beta_offset 0x00990b6d (int)    : min=-6 max=6 step=1 default=0 value=0
         hevc_loop_filter_tc_offset 0x00990b6e (int)    : min=-6 max=6 step=1 default=0 value=0
                  hevc_refresh_type 0x00990b6f (menu)   : min=0 max=2 default=2 value=2 (IDR)
      hevc_num_of_i_frame_b_w_2_idr 0x00990b70 (int)    : min=0 max=2047 step=1 default=0 value=0
             hevc_lossless_encoding 0x00990b71 (int)    : min=0 max=1 step=1 default=0 value=0
     hevc_constant_intra_prediction 0x00990b72 (int)    : min=0 max=1 step=1 default=0 value=0
                     hevc_wavefront 0x00990b73 (int)    : min=0 max=1 step=1 default=0 value=0
        hevc_strong_intra_smoothing 0x00990b76 (int)    : min=0 max=1 step=1 default=1 value=1
      hevc_max_num_of_candidate_mvs 0x00990b77 (int)    : min=1 max=2 step=1 default=2 value=2
                hevc_tmv_prediction 0x00990b79 (int)    : min=0 max=1 step=1 default=1 value=1
         prepend_sps_and_pps_to_idr 0x00990b84 (int)    : min=0 max=1 step=1 default=0 value=0

    一种选择是通过 tiovxmultiscaler 插件运行图像、并在对图像进行编码之前使用该插件裁剪图像。

    此致、
    Jared