summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Isely <devnull@localhost>2006-01-14 20:11:08 +0000
committerMike Isely <devnull@localhost>2006-01-14 20:11:08 +0000
commitd994bb1e8067e27e458a8e741b57476171fa45d1 (patch)
tree94346f9d466e0269543e15c4df97d13d491ed2d1
parent4216cf3bb3ba15fd9c18be2d62e65f78c2d95c16 (diff)
downloadmediapointer-dvb-s2-d994bb1e8067e27e458a8e741b57476171fa45d1.tar.gz
mediapointer-dvb-s2-d994bb1e8067e27e458a8e741b57476171fa45d1.tar.bz2
Start using cx2341x.h for encoder commands
-Change pvrusb2-encoder.c to use encoder command definitions from cx2341x.h instead of hardcoding those definitions directly. From: Mike Isely <isely@pobox.com> Signed-off-by: Mike Isely <isely@pobox.com>
-rw-r--r--v4l/ChangeLog11
-rw-r--r--v4l_experimental/pvrusb2/pvrusb2-encoder.c155
2 files changed, 43 insertions, 123 deletions
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index 9ed5f2fed..a519780ed 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,3 +1,14 @@
+2006-01-14 20:08 mcisely
+
+ * v4l_experimental/pvrusb2/pvrusb2-encoder.c:
+ (pvr2_encoder_configure), (pvr2_encoder_start),
+ (pvr2_encoder_stop):
+
+ -Use encoder command definitions from cx2341x.h instead of
+ hard-coding them into pvrusb2's encoder module.
+
+ Signed-off-by: Mike Isely <isely@pobox.com>
+
2006-01-14 19:05 mcisely
* v4l_experimental/pvrusb2/pvrusb2-audio.c:
diff --git a/v4l_experimental/pvrusb2/pvrusb2-encoder.c b/v4l_experimental/pvrusb2/pvrusb2-encoder.c
index 91e03b2bc..046cd9f1f 100644
--- a/v4l_experimental/pvrusb2/pvrusb2-encoder.c
+++ b/v4l_experimental/pvrusb2/pvrusb2-encoder.c
@@ -1,6 +1,6 @@
/*
*
- * $Id: pvrusb2-encoder.c,v 1.4 2006/01/01 08:26:03 mcisely Exp $
+ * $Id: pvrusb2-encoder.c,v 1.5 2006/01/14 20:11:08 mcisely Exp $
*
* Copyright (C) 2005 Mike Isely <isely@pobox.com>
* Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
@@ -22,6 +22,7 @@
#include <linux/device.h> // for linux/firmware.h
#include <linux/firmware.h>
+#include "cx2341x.h"
#include "pvrusb2-util.h"
#include "pvrusb2-encoder.h"
#include "pvrusb2-hdw-internal.h"
@@ -56,98 +57,6 @@ static u32 pvr_tbl_audiobitrate[] = {
[PVR2_CVAL_AUDIOBITRATE_VBR] = 0x0 << 4,
};
-/* Firmware API commands - definitions found from ivtv */
-#ifdef notdef
-#define IVTV_API_DEC_PING_FW 0x00
-#define IVTV_API_DEC_START_PLAYBACK 0x01
-#define IVTV_API_DEC_STOP_PLAYBACK 0x02
-#define IVTV_API_DEC_PLAYBACK_SPEED 0x03
-#define IVTV_API_DEC_STEP_VIDEO 0x05
-#define IVTV_API_DEC_DMA_BLOCKSIZE 0x08
-#define IVTV_API_DEC_XFER_INFO 0x09
-#define IVTV_API_DEC_DMA_STATUS 0x0a
-#define IVTV_API_DEC_DMA_FROM_HOST 0x0b
-#define IVTV_API_DEC_PAUSE_PLAYBACK 0x0d
-#define IVTV_API_DEC_HALT_FW 0x0f
-
-#define IVTV_API_DEC_DISP_STANDARD 0x10
-#define IVTV_API_DEC_GETVER 0x11
-#define IVTV_API_DEC_STREAM_INPUT 0x14
-#define IVTV_API_DEC_TIMING_INFO 0x15
-#define IVTV_API_DEC_SELECT_AUDIO 0x16
-#define IVTV_API_DEC_EVENT_NOTIFICATION 0x17
-#define IVTV_API_DEC_DISPLAY_BUFFERS 0x18
-#define IVTV_API_DEC_EXTRACT_VBI 0x19
-#define IVTV_API_DEC_DECODE_SOURCE 0x1a
-#define IVTV_API_DEC_AUDIO_OUTPUT 0x1b
-#define IVTV_API_DEC_SET_AV_DELAY 0x1c
-#define IVTV_API_DEC_BUFFER 0x1e
-
-#define IVTV_API_FB_GET_FRAMEBUFFER 0x41
-#define IVTV_API_FB_GET_PIXEL_FORMAT 0x42
-#define IVTV_API_FB_SET_PIXEL_FORMAT 0x43
-#define IVTV_API_FB_GET_STATE 0x44
-#define IVTV_API_FB_SET_STATE 0x45
-#define IVTV_API_FB_GET_OSD_COORDS 0x46
-#define IVTV_API_FB_SET_OSD_COORDS 0x47
-#define IVTV_API_FB_GET_SCREEN_COORDS 0x48
-#define IVTV_API_FB_SET_SCREEN_COORDS 0x49
-#define IVTV_API_FB_GET_GLOBAL_ALPHA 0x4a
-#define IVTV_API_FB_SET_GLOBAL_ALPHA 0x4b
-#define IVTV_API_FB_SET_BLEND_COORDS 0x4c
-#define IVTV_API_FB_GET_FLICKER_STATE 0x4f
-
-#define IVTV_API_FB_SET_FLICKER_STATE 0x50
-#define IVTV_API_FB_BLT_COPY 0x52
-#define IVTV_API_FB_BLT_FILL 0x53
-#define IVTV_API_FB_BLT_TEXT 0x54
-#define IVTV_API_FB_SET_FRAMEBUFFER_WINDOW 0x56
-
-#define IVTV_API_FB_SET_CHROMA_KEY 0x60
-#define IVTV_API_FB_GET_ALPHA_CONTENT_INDEX 0x61
-#define IVTV_API_FB_SET_ALPHA_CONTENT_INDEX 0x62
-#endif
-
-#define IVTV_API_ENC_PING_FW 0x80
-#define IVTV_API_BEGIN_CAPTURE 0x81
-#define IVTV_API_END_CAPTURE 0x82
-#define IVTV_API_ASSIGN_FRAMERATE 0x8f
-
-#define IVTV_API_ASSIGN_FRAME_SIZE 0x91
-#define IVTV_API_ASSIGN_BITRATES 0x95
-#define IVTV_API_ASSIGN_GOP_PROPERTIES 0x97
-#define IVTV_API_ASSIGN_ASPECT_RATIO 0x99
-#define IVTV_API_ASSIGN_DNR_FILTER_MODE 0x9b
-#define IVTV_API_ASSIGN_DNR_FILTER_PROPS 0x9d
-#define IVTV_API_ASSIGN_CORING_LEVELS 0x9f
-
-#define IVTV_API_ASSIGN_SPATIAL_FILTER_TYPE 0xa1
-
-#define IVTV_API_ASSIGN_3_2_PULLDOWN 0xb1
-#define IVTV_API_SELECT_VBI_LINE 0xb7
-#define IVTV_API_ASSIGN_STREAM_TYPE 0xb9
-#define IVTV_API_ASSIGN_OUTPUT_PORT 0xbb
-#define IVTV_API_ASSIGN_AUDIO_PROPERTIES 0xbd
-
-#define IVTV_API_ENC_HALT_FW 0xc3
-#define IVTV_API_ENC_GETVER 0xc4
-#define IVTV_API_ASSIGN_GOP_CLOSURE 0xc5
-#define IVTV_API_ASSIGN_PGM_INDEX_INFO 0xc7
-#define IVTV_API_CONFIG_VBI 0xc8
-#define IVTV_API_ASSIGN_DMA_BLOCKLEN 0xc9
-#define IVTV_API_SCHED_DMA_TO_HOST 0xcc
-#define IVTV_API_INITIALIZE_INPUT 0xcd
-
-#define IVTV_API_ASSIGN_FRAME_DROP_RATE 0xd0
-#define IVTV_API_PAUSE_ENCODER 0xd2
-#define IVTV_API_REFRESH_INPUT 0xd3
-#define IVTV_API_EVENT_NOTIFICATION 0xd5
-#define IVTV_API_ASSIGN_NUM_VSYNC_LINES 0xd6
-#define IVTV_API_ASSIGN_PLACEHOLDER 0xd8
-#define IVTV_API_MUTE_VIDEO 0xd9
-#define IVTV_API_MUTE_AUDIO 0xda
-
-#define IVTV_API_OSD_DMA_FROM_HOST 0xff
/* Firmware mailbox flags - definitions found from ivtv */
#define IVTV_MBOX_FIRMWARE_DONE 0x00000004
@@ -384,11 +293,11 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw)
pvr2_trace(PVR2_TRACE_ENCODER,"pvr2_encoder_configure");
/* set stream output port. */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_OUTPUT_PORT, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_OUTPUT_PORT, 2,
0x01, 0x01);
/* set the Program Index Information. We want I,P,B frames (max 400) */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_PGM_INDEX_INFO, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_PGM_INDEX_INFO, 2,
0x07, 0x0190);
/* NOTE : windows driver sends some 0xdc */
@@ -407,28 +316,28 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw)
/* Strange compared to ivtv data. */
#ifdef notdef
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_NUM_VSYNC_LINES, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_NUM_VSYNC_LINES, 2,
0x0120, 0x0120);
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_NUM_VSYNC_LINES, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_NUM_VSYNC_LINES, 2,
0x0131, 0x0131);
#endif
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_NUM_VSYNC_LINES, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_NUM_VSYNC_LINES, 2,
0xf0, 0xf0);
/* setup firmware to notify us about some events (don't know why...) */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_EVENT_NOTIFICATION, 4,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_EVENT_NOTIFICATION, 4,
0, 0, 0x10000000, 0xffffffff);
/* set fps to 25 or 30 (1 or 0)*/
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_FRAMERATE, 1,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_FRAME_RATE, 1,
is_30fps ? 0 : 1);
/* set encoding resolution */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_FRAME_SIZE, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_FRAME_SIZE, 2,
(height_full ? height : (height / 2)),
width);
/* set encoding aspect ratio to 4:3 */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_ASPECT_RATIO, 1,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_ASPECT_RATIO, 1,
0x02);
/* VBI */
@@ -436,7 +345,7 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw)
if (hdw->config == pvr2_config_vbi) {
int lines = 2 * (is_30fps ? 12 : 18);
int size = (4*((lines*1443+3)/4)) / lines;
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_CONFIG_VBI, 7,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_VBI_CONFIG, 7,
0xbd05, 1, 4,
0x25256262, 0x387f7f7f,
lines , size);
@@ -445,37 +354,37 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw)
#define line_used(l) (is_30fps ? (l >= 10 && l <= 21) : (l >= 6 && l <= 23))
for (i = 2 ; i <= 24 ; i++){
ret |= pvr2_write_encoder_vcmd(
- hdw,IVTV_API_SELECT_VBI_LINE, 5,
+ hdw,CX2341X_ENC_SET_VBI_LINE, 5,
i-1,line_used(i), 0, 0, 0);
ret |= pvr2_write_encoder_vcmd(
- hdw,IVTV_API_SELECT_VBI_LINE, 5,
+ hdw,CX2341X_ENC_SET_VBI_LINE, 5,
(i-1) | (1 << 31),
line_used(i), 0, 0, 0);
}
} else {
ret |= pvr2_write_encoder_vcmd(
- hdw,IVTV_API_SELECT_VBI_LINE, 5,
+ hdw,CX2341X_ENC_SET_VBI_LINE, 5,
0xffffffff,0,0,0,0);
}
/* set stream type, depending on resolution. */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_STREAM_TYPE, 1,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_STREAM_TYPE, 1,
height_full ? 0x0a : 0x0b);
/* set video bitrate */
ret |= pvr2_write_encoder_vcmd(
- hdw, IVTV_API_ASSIGN_BITRATES, 3,
+ hdw, CX2341X_ENC_SET_BIT_RATE, 3,
(hdw->controls[PVR2_CID_VBR].value ? 1 : 0),
hdw->controls[PVR2_CID_AVERAGEVIDEOBITRATE].value,
(u32) (hdw->controls[PVR2_CID_PEAKVIDEOBITRATE].value) / 400);
/* setup GOP structure (GOP size = 0f or 0c, 3-1 = 2 B-frames) */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_GOP_PROPERTIES, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_GOP_PROPERTIES, 2,
is_30fps ? 0x0f : 0x0c, 0x03);
/* enable 3:2 pulldown */
- ret |= pvr2_write_encoder_vcmd(hdw,IVTV_API_ASSIGN_3_2_PULLDOWN,1,0);
+ ret |= pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_SET_3_2_PULLDOWN,1,0);
/* set GOP open/close property (open) */
- ret |= pvr2_write_encoder_vcmd(hdw,IVTV_API_ASSIGN_GOP_CLOSURE,1,0);
+ ret |= pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_SET_GOP_CLOSURE,1,0);
/* set audio stream properties 0x40b9? 0100 0000 1011 1001 */
audio = (pvr_tbl_audiobitrate[hdw->controls[
@@ -486,28 +395,28 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw)
pvr_tbl_emphasis[hdw->controls[
PVR2_CID_AUDIOEMPHASIS].value]);
- ret |= pvr2_write_encoder_vcmd(hdw,IVTV_API_ASSIGN_AUDIO_PROPERTIES,1,
+ ret |= pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_SET_AUDIO_PROPERTIES,1,
audio);
/* set dynamic noise reduction filter to manual, Horiz/Vert */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_DNR_FILTER_MODE, 2,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_DNR_FILTER_MODE, 2,
0, 0x03);
/* dynamic noise reduction filter param */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_DNR_FILTER_PROPS, 2
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_DNR_FILTER_PROPS, 2
, 0, 0);
/* dynamic noise reduction median filter */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_ASSIGN_CORING_LEVELS, 4,
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_SET_CORING_LEVELS, 4,
0, 0xff, 0, 0xff);
/* spacial prefiler parameter */
ret |= pvr2_write_encoder_vcmd(hdw,
- IVTV_API_ASSIGN_SPATIAL_FILTER_TYPE, 2,
+ CX2341X_ENC_SET_SPATIAL_FILTER_TYPE, 2,
0x01, 0x01);
/* initialize video input */
- ret |= pvr2_write_encoder_vcmd(hdw, IVTV_API_INITIALIZE_INPUT, 0);
+ ret |= pvr2_write_encoder_vcmd(hdw, CX2341X_ENC_INITIALIZE_INPUT, 0);
if (!ret) {
hdw->subsys_enabled_mask |= PVR2_SUBSYS_ENC_CFG;
@@ -528,13 +437,13 @@ int pvr2_encoder_start(struct pvr2_hdw *hdw)
pvr2_hdw_gpio_chg_out(hdw,0xffffffff,0x00000000);
if (hdw->config == pvr2_config_vbi) {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_BEGIN_CAPTURE,2,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
0x01,0x14);
} else if (hdw->config == pvr2_config_mpeg) {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_BEGIN_CAPTURE,2,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
0,0x13);
} else {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_BEGIN_CAPTURE,2,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
0,0x13);
}
if (!status) {
@@ -551,13 +460,13 @@ int pvr2_encoder_stop(struct pvr2_hdw *hdw)
pvr2_write_register(hdw, 0x0048, 0xffffffff);
if (hdw->config == pvr2_config_vbi) {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_END_CAPTURE,3,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
0x01,0x01,0x14);
} else if (hdw->config == pvr2_config_mpeg) {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_END_CAPTURE,3,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
0x01,0,0x13);
} else {
- status = pvr2_write_encoder_vcmd(hdw,IVTV_API_END_CAPTURE,3,
+ status = pvr2_write_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
0x01,0,0x13);
}