Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eafea210 authored by Steven Toth's avatar Steven Toth Committed by Mauro Carvalho Chehab
Browse files

[media] saa7164: allow the encoder GOP structure to be configured

parent 4a52be0f
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -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;
}
+1 −0
Original line number Diff line number Diff line
@@ -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
+12 −0
Original line number Diff line number Diff line
@@ -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
{