mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 02:34:23 +08:00
[media] saa7164: allow the encoder GOP structure to be configured
Signed-off-by: Steven Toth <stoth@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
4a52be0faa
commit
eafea21071
@ -24,6 +24,25 @@
|
||||
|
||||
#include "saa7164.h"
|
||||
|
||||
int saa7164_api_set_gop_size(struct saa7164_port *port)
|
||||
{
|
||||
struct saa7164_dev *dev = port->dev;
|
||||
tmComResEncVideoGopStructure_t gs;
|
||||
int ret;
|
||||
|
||||
dprintk(DBGLVL_ENC, "%s()\n", __func__);
|
||||
|
||||
gs.ucRefFrameDist = SAA7164_ENCODER_DEFAULT_GOP_DIST;
|
||||
gs.ucGOPSize = SAA7164_ENCODER_DEFAULT_GOP_SIZE;
|
||||
ret = saa7164_cmd_send(port->dev, port->hwcfg.sourceid, SET_CUR,
|
||||
EU_VIDEO_GOP_STRUCTURE_CONTROL,
|
||||
sizeof(gs), &gs);
|
||||
if (ret != SAA_OK)
|
||||
printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int saa7164_api_set_encoder(struct saa7164_port *port)
|
||||
{
|
||||
struct saa7164_dev *dev = port->dev;
|
||||
@ -31,7 +50,8 @@ int saa7164_api_set_encoder(struct saa7164_port *port)
|
||||
tmComResEncAudioBitRate_t ab;
|
||||
int ret;
|
||||
|
||||
dprintk(DBGLVL_ENC, "%s() unitid=0x%x\n", __func__, port->hwcfg.sourceid);
|
||||
dprintk(DBGLVL_ENC, "%s() unitid=0x%x\n", __func__,
|
||||
port->hwcfg.sourceid);
|
||||
|
||||
ret = saa7164_cmd_send(port->dev, port->hwcfg.sourceid, SET_CUR,
|
||||
EU_PROFILE_CONTROL, sizeof(u8), &port->encoder_profile);
|
||||
@ -57,6 +77,7 @@ int saa7164_api_set_encoder(struct saa7164_port *port)
|
||||
printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
|
||||
|
||||
saa7164_api_set_aspect_ratio(port);
|
||||
saa7164_api_set_gop_size(port);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -205,6 +205,7 @@
|
||||
#define EU_PROFILE_CONTROL 0x00
|
||||
#define EU_VIDEO_FORMAT_CONTROL 0x01
|
||||
#define EU_VIDEO_BIT_RATE_CONTROL 0x02
|
||||
#define EU_VIDEO_GOP_STRUCTURE_CONTROL 0x04
|
||||
#define EU_VIDEO_INPUT_ASPECT_CONTROL 0x0A
|
||||
#define EU_AUDIO_FORMAT_CONTROL 0x0C
|
||||
#define EU_AUDIO_BIT_RATE_CONTROL 0x0D
|
||||
|
@ -325,6 +325,18 @@ typedef struct
|
||||
u8 height;
|
||||
} __attribute__((packed)) tmComResEncVideoInputAspectRatio_t;
|
||||
|
||||
/* Video Encoder GOP IBP message */
|
||||
/* 1. IPPPPPPPPPPPPPP */
|
||||
/* 2. IBPBPBPBPBPBPBP */
|
||||
/* 3. IBBPBBPBBPBBP */
|
||||
#define SAA7164_ENCODER_DEFAULT_GOP_DIST ( 1)
|
||||
#define SAA7164_ENCODER_DEFAULT_GOP_SIZE (15)
|
||||
typedef struct
|
||||
{
|
||||
u8 ucGOPSize; /* GOP Size 12, 15 */
|
||||
u8 ucRefFrameDist; /* Reference Frame Distance */
|
||||
} __attribute__((packed)) tmComResEncVideoGopStructure_t;
|
||||
|
||||
/* Encoder processor definition */
|
||||
typedef struct
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user