All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
@ 2011-06-08 20:23 Mauro Carvalho Chehab
  2011-06-08 20:59 ` Hans Verkuil
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-08 20:23 UTC (permalink / raw)
  Cc: Linux Media Mailing List

There's a huge gap between the DVB specs and the current implementation.
This were caused by years of changes that happened at the code but
no updates to the specs were done.

This patch series tries to reduce this gap.

Basically, the headers at include/linux/dvb were included at the API.
The Makefile scripting auto-generate references for structs, typedefs
and ioctls. With this, it is now easy to identify when something is
missing.

After adding such logic, I've manually synchronized the specs with the
header file and updated the data structures.

The work is not complete yet: there are still several ioctl's not
documented at the specs:

Error: no ID for constraint linkend: AUDIO_BILINGUAL_CHANNEL_SELECT.
Error: no ID for constraint linkend: CA_RESET.
Error: no ID for constraint linkend: CA_GET_CAP.
Error: no ID for constraint linkend: CA_GET_SLOT_INFO.
Error: no ID for constraint linkend: CA_GET_DESCR_INFO.
Error: no ID for constraint linkend: CA_GET_MSG.
Error: no ID for constraint linkend: CA_SEND_MSG.
Error: no ID for constraint linkend: CA_SET_DESCR.
Error: no ID for constraint linkend: CA_SET_PID.
Error: no ID for constraint linkend: DMX_GET_PES_PIDS.
Error: no ID for constraint linkend: DMX_GET_CAPS.
Error: no ID for constraint linkend: DMX_SET_SOURCE.
Error: no ID for constraint linkend: DMX_ADD_PID.
Error: no ID for constraint linkend: DMX_REMOVE_PID.
Error: no ID for constraint linkend: NET_ADD_IF.
Error: no ID for constraint linkend: NET_REMOVE_IF.
Error: no ID for constraint linkend: NET_GET_IF.
Error: no ID for constraint linkend: VIDEO_GET_SIZE.
Error: no ID for constraint linkend: VIDEO_GET_FRAME_RATE.
Error: no ID for constraint linkend: VIDEO_GET_PTS.
Error: no ID for constraint linkend: VIDEO_GET_FRAME_COUNT.
Error: no ID for constraint linkend: VIDEO_COMMAND.
Error: no ID for constraint linkend: VIDEO_TRY_COMMAND.

I also opted to not add the osd.h header into the DocBook, as it seemed
odd on my eyes, and it is used only by one legacy hardware.

While here, I noticed that one audio ioctl is not used anyware
(AUDIO_GET_PTS). There is just the ioctl definition and that's it. 
I just removed this definition, as removing it won't cause any 
regression, as no in-kernel driver or dvb-core uses it.

Btw, there are several ioctl's and correponding data structures that
are used on just one or two old drivers. I think we should consider
to deprecate those old stuff.

Mauro Carvalho Chehab (13):
  [media] DocBook: Add the other DVB API header files
  [media] DocBook/audio.xml: match section ID's with the reference links
  [media] DocBook/audio.xml: synchronize attribute changes
  [media] DocBook: Document AUDIO_CONTINUE ioctl
  [media] dvb/audio.h: Remove definition for AUDIO_GET_PTS
  [media] Docbook/ca.xml: match section ID's with the reference links
  [media] DocBook/ca.xml: Describe structure ca_pid
  [media] DocBook/demux.xml: Fix section references with dmx.h.xml
  [media] DocBook/demux.xml: Add the remaining data structures to the API spec
  [media] DocBook/net.xml: Synchronize Network data structure
  [media] DocBook/Makefile: Remove osd.h header
  [media] DocBook/video.xml: Fix section references with video.h.xml
  [media] DocBook/video.xml: Document the remaining data structures

 Documentation/DocBook/media/Makefile       |   81 ++++++++++-
 Documentation/DocBook/media/dvb/audio.xml  |  176 +++++++++++++++--------
 Documentation/DocBook/media/dvb/ca.xml     |  106 ++++++++------
 Documentation/DocBook/media/dvb/demux.xml  |  206 +++++++++++++++-----------
 Documentation/DocBook/media/dvb/dvbapi.xml |   20 +++
 Documentation/DocBook/media/dvb/intro.xml  |   19 +++-
 Documentation/DocBook/media/dvb/net.xml    |   17 ++
 Documentation/DocBook/media/dvb/video.xml  |  220 +++++++++++++++++-----------
 include/linux/dvb/audio.h                  |   14 +--
 9 files changed, 564 insertions(+), 295 deletions(-)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-08 20:23 [PATCH 00/13] Reduce the gap between DVBv5 API and the specs Mauro Carvalho Chehab
@ 2011-06-08 20:59 ` Hans Verkuil
  2011-06-08 21:38   ` Mauro Carvalho Chehab
  2011-06-09  1:20 ` RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: " Mauro Carvalho Chehab
  2011-06-09 13:06 ` Manu Abraham
  2 siblings, 1 reply; 12+ messages in thread
From: Hans Verkuil @ 2011-06-08 20:59 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Linux Media Mailing List

On Wednesday, June 08, 2011 22:23:11 Mauro Carvalho Chehab wrote:
> There's a huge gap between the DVB specs and the current implementation.
> This were caused by years of changes that happened at the code but
> no updates to the specs were done.
> 
> This patch series tries to reduce this gap.
> 
> Basically, the headers at include/linux/dvb were included at the API.
> The Makefile scripting auto-generate references for structs, typedefs
> and ioctls. With this, it is now easy to identify when something is
> missing.
> 
> After adding such logic, I've manually synchronized the specs with the
> header file and updated the data structures.
> 
> The work is not complete yet: there are still several ioctl's not
> documented at the specs:
> 
> Error: no ID for constraint linkend: AUDIO_BILINGUAL_CHANNEL_SELECT.
...
> Error: no ID for constraint linkend: VIDEO_GET_SIZE.
> Error: no ID for constraint linkend: VIDEO_GET_FRAME_RATE.
> Error: no ID for constraint linkend: VIDEO_GET_PTS.
> Error: no ID for constraint linkend: VIDEO_GET_FRAME_COUNT.
> Error: no ID for constraint linkend: VIDEO_COMMAND.
> Error: no ID for constraint linkend: VIDEO_TRY_COMMAND.

A lot of these video/audio commands should be converted to V4L ioctls.

VIDEO_COMMAND and VIDEO_TRY_COMMAND should become VIDIOC_(TRY_)DECODER_CMD,
the others can either be integrated into VIDIOC_DECODER_CMD or become
(read-only) controls or something similar. Or just dropped if no apps use them.

The only drivers that use these at the moment are ivtv and av7110. At least for
ivtv I'd love to switch to V4L ioctls (documented and all) and leave the old
VIDEO/AUDIO ioctls as specific to av7110 (just like osd.h).

Realistically this would be a job for me, but I am still way too busy to
tackle something like this.

> I also opted to not add the osd.h header into the DocBook, as it seemed
> odd on my eyes, and it is used only by one legacy hardware.
> 
> While here, I noticed that one audio ioctl is not used anyware
> (AUDIO_GET_PTS). There is just the ioctl definition and that's it. 
> I just removed this definition, as removing it won't cause any 
> regression, as no in-kernel driver or dvb-core uses it.

It was originally planned to be used in ivtv, but this never happened.

> Btw, there are several ioctl's and correponding data structures that
> are used on just one or two old drivers. I think we should consider
> to deprecate those old stuff.

Which? If you have a list of those, then that would make for an interesting
RFC.

Regards,

	Hans

> 
> Mauro Carvalho Chehab (13):
>   [media] DocBook: Add the other DVB API header files
>   [media] DocBook/audio.xml: match section ID's with the reference links
>   [media] DocBook/audio.xml: synchronize attribute changes
>   [media] DocBook: Document AUDIO_CONTINUE ioctl
>   [media] dvb/audio.h: Remove definition for AUDIO_GET_PTS
>   [media] Docbook/ca.xml: match section ID's with the reference links
>   [media] DocBook/ca.xml: Describe structure ca_pid
>   [media] DocBook/demux.xml: Fix section references with dmx.h.xml
>   [media] DocBook/demux.xml: Add the remaining data structures to the API spec
>   [media] DocBook/net.xml: Synchronize Network data structure
>   [media] DocBook/Makefile: Remove osd.h header
>   [media] DocBook/video.xml: Fix section references with video.h.xml
>   [media] DocBook/video.xml: Document the remaining data structures
> 
>  Documentation/DocBook/media/Makefile       |   81 ++++++++++-
>  Documentation/DocBook/media/dvb/audio.xml  |  176 +++++++++++++++--------
>  Documentation/DocBook/media/dvb/ca.xml     |  106 ++++++++------
>  Documentation/DocBook/media/dvb/demux.xml  |  206 +++++++++++++++-----------
>  Documentation/DocBook/media/dvb/dvbapi.xml |   20 +++
>  Documentation/DocBook/media/dvb/intro.xml  |   19 +++-
>  Documentation/DocBook/media/dvb/net.xml    |   17 ++
>  Documentation/DocBook/media/dvb/video.xml  |  220 +++++++++++++++++-----------
>  include/linux/dvb/audio.h                  |   14 +--
>  9 files changed, 564 insertions(+), 295 deletions(-)
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-08 20:59 ` Hans Verkuil
@ 2011-06-08 21:38   ` Mauro Carvalho Chehab
  2011-06-09 12:51     ` Andreas Oberritter
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-08 21:38 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux Media Mailing List

Em 08-06-2011 17:59, Hans Verkuil escreveu:
> On Wednesday, June 08, 2011 22:23:11 Mauro Carvalho Chehab wrote:
>> There's a huge gap between the DVB specs and the current implementation.
>> This were caused by years of changes that happened at the code but
>> no updates to the specs were done.
>>
>> This patch series tries to reduce this gap.
>>
>> Basically, the headers at include/linux/dvb were included at the API.
>> The Makefile scripting auto-generate references for structs, typedefs
>> and ioctls. With this, it is now easy to identify when something is
>> missing.
>>
>> After adding such logic, I've manually synchronized the specs with the
>> header file and updated the data structures.
>>
>> The work is not complete yet: there are still several ioctl's not
>> documented at the specs:
>>
>> Error: no ID for constraint linkend: AUDIO_BILINGUAL_CHANNEL_SELECT.
> ...
>> Error: no ID for constraint linkend: VIDEO_GET_SIZE.
>> Error: no ID for constraint linkend: VIDEO_GET_FRAME_RATE.
>> Error: no ID for constraint linkend: VIDEO_GET_PTS.
>> Error: no ID for constraint linkend: VIDEO_GET_FRAME_COUNT.
>> Error: no ID for constraint linkend: VIDEO_COMMAND.
>> Error: no ID for constraint linkend: VIDEO_TRY_COMMAND.
> 
> A lot of these video/audio commands should be converted to V4L ioctls.

Agreed.

> VIDEO_COMMAND and VIDEO_TRY_COMMAND should become VIDIOC_(TRY_)DECODER_CMD,
> the others can either be integrated into VIDIOC_DECODER_CMD or become
> (read-only) controls or something similar. Or just dropped if no apps use them.
> 
> The only drivers that use these at the moment are ivtv and av7110. At least for
> ivtv I'd love to switch to V4L ioctls (documented and all) and leave the old
> VIDEO/AUDIO ioctls as specific to av7110 (just like osd.h).

That seems to be the right approach to me.

> Realistically this would be a job for me, but I am still way too busy to
> tackle something like this.
> 
>> I also opted to not add the osd.h header into the DocBook, as it seemed
>> odd on my eyes, and it is used only by one legacy hardware.
>>
>> While here, I noticed that one audio ioctl is not used anyware
>> (AUDIO_GET_PTS). There is just the ioctl definition and that's it. 
>> I just removed this definition, as removing it won't cause any 
>> regression, as no in-kernel driver or dvb-core uses it.
> 
> It was originally planned to be used in ivtv, but this never happened.
> 
>> Btw, there are several ioctl's and correponding data structures that
>> are used on just one or two old drivers. I think we should consider
>> to deprecate those old stuff.
> 
> Which? If you have a list of those, then that would make for an interesting
> RFC.

Well, with a simple git grep, we can check this:

$ for i in $(perl -ne 'print "$1\n" if /\#define\s+([^\s]+)\s+_IO/' include/linux/dvb/*); do echo $i; git grep -l $i drivers/media ; done
AUDIO_STOP
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PAUSE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MUTE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_SET_AV_SYNC
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_BYPASS_MODE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CHANNEL_SELECT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_ID
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MIXER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_STOP
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PAUSE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MUTE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_SET_AV_SYNC
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_BYPASS_MODE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CHANNEL_SELECT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_ID
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MIXER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
drivers/media/video/ivtv/ivtv-ioctl.c
CA_RESET
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-avc.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_CAP
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_SLOT_INFO
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_DESCR_INFO
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_MSG
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SEND_MSG
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SET_DESCR
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SET_PID
drivers/media/dvb/bt8xx/dst_ca.c
DMX_START
drivers/media/dvb/dvb-core/dmxdev.c
DMX_STOP
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_FILTER
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_PES_FILTER
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_BUFFER_SIZE
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_PES_PIDS
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_CAPS
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_SOURCE
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_STC
drivers/media/dvb/dvb-core/dmxdev.c
DMX_ADD_PID
drivers/media/dvb/dvb-core/dmxdev.c
DMX_REMOVE_PID
drivers/media/dvb/dvb-core/dmxdev.c
FE_SET_PROPERTY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_PROPERTY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_INFO
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_RESET_OVERLOAD
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_SEND_MASTER_CMD
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_RECV_SLAVE_REPLY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_SEND_BURST
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_TONE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_VOLTAGE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_ENABLE_HIGH_LNB_VOLTAGE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_STATUS
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/si21xx.c
drivers/media/dvb/frontends/stv0288.c
drivers/media/dvb/frontends/stv0299.c
FE_READ_BER
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_SIGNAL_STRENGTH
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/stv0299.c
FE_READ_SNR
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_UNCORRECTED_BLOCKS
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_FRONTEND
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/si21xx.c
drivers/media/dvb/frontends/stv0288.c
drivers/media/dvb/frontends/stv0299.c
drivers/media/video/cx23885/cx23885-dvb.c
FE_GET_FRONTEND
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_FRONTEND_TUNE_MODE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_EVENT
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISHNETWORK_SEND_LEGACY_CMD
drivers/media/dvb/dvb-core/dvb_frontend.c
NET_ADD_IF
drivers/media/dvb/dvb-core/dvb_net.c
NET_REMOVE_IF
drivers/media/dvb/dvb-core/dvb_net.c
NET_GET_IF
drivers/media/dvb/dvb-core/dvb_net.c
__NET_ADD_IF_OLD
drivers/media/dvb/dvb-core/dvb_net.c
drivers/media/dvb/ttpci/av7110.c
OSD_GET_CAPABILITY
drivers/media/dvb/ttpci/av7110.c
VIDEO_STOP
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_FREEZE
drivers/media/dvb/ttpci/av7110.c
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SET_BLANK
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_EVENT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SET_DISPLAY_FORMAT
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_STILLPICTURE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_FAST_FORWARD
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SLOWMOTION
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_ID
VIDEO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_FORMAT
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_SYSTEM
VIDEO_SET_HIGHLIGHT
VIDEO_SET_SPU
VIDEO_SET_SPU_PALETTE
VIDEO_GET_NAVI
VIDEO_SET_ATTRIBUTES
VIDEO_GET_SIZE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_FRAME_RATE
VIDEO_GET_PTS
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_GET_FRAME_COUNT
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_COMMAND
drivers/media/dvb/ttpci/av7110_hw.h
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_TRY_COMMAND
drivers/media/video/ivtv/ivtv-ioctl.c

Basically:

- all AUDIO*, OSD* and VIDEO* are used only by av7110 and ivtv.

- The CA* ioctls are used by core (although several are only implemented
  inside a few drivers);

- All the DMX*, FE*, NET* ioctl's are implemented inside the core.

I'll write a RFC.

> 
> Regards,
> 
> 	Hans
> 
>>
>> Mauro Carvalho Chehab (13):
>>   [media] DocBook: Add the other DVB API header files
>>   [media] DocBook/audio.xml: match section ID's with the reference links
>>   [media] DocBook/audio.xml: synchronize attribute changes
>>   [media] DocBook: Document AUDIO_CONTINUE ioctl
>>   [media] dvb/audio.h: Remove definition for AUDIO_GET_PTS
>>   [media] Docbook/ca.xml: match section ID's with the reference links
>>   [media] DocBook/ca.xml: Describe structure ca_pid
>>   [media] DocBook/demux.xml: Fix section references with dmx.h.xml
>>   [media] DocBook/demux.xml: Add the remaining data structures to the API spec
>>   [media] DocBook/net.xml: Synchronize Network data structure
>>   [media] DocBook/Makefile: Remove osd.h header
>>   [media] DocBook/video.xml: Fix section references with video.h.xml
>>   [media] DocBook/video.xml: Document the remaining data structures
>>
>>  Documentation/DocBook/media/Makefile       |   81 ++++++++++-
>>  Documentation/DocBook/media/dvb/audio.xml  |  176 +++++++++++++++--------
>>  Documentation/DocBook/media/dvb/ca.xml     |  106 ++++++++------
>>  Documentation/DocBook/media/dvb/demux.xml  |  206 +++++++++++++++-----------
>>  Documentation/DocBook/media/dvb/dvbapi.xml |   20 +++
>>  Documentation/DocBook/media/dvb/intro.xml  |   19 +++-
>>  Documentation/DocBook/media/dvb/net.xml    |   17 ++
>>  Documentation/DocBook/media/dvb/video.xml  |  220 +++++++++++++++++-----------
>>  include/linux/dvb/audio.h                  |   14 +--
>>  9 files changed, 564 insertions(+), 295 deletions(-)
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 12+ messages in thread

* RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-08 20:23 [PATCH 00/13] Reduce the gap between DVBv5 API and the specs Mauro Carvalho Chehab
  2011-06-08 20:59 ` Hans Verkuil
@ 2011-06-09  1:20 ` Mauro Carvalho Chehab
  2011-06-09  7:08   ` Hans Verkuil
  2011-06-09 13:06 ` Manu Abraham
  2 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-09  1:20 UTC (permalink / raw)
  To: Linux Media Mailing List

Hi,

Em 08-06-2011 17:23, Mauro Carvalho Chehab escreveu:
> There's a huge gap between the DVB specs and the current implementation.
> This were caused by years of changes that happened at the code but
> no updates to the specs were done.
> 
> This patch series tries to reduce this gap.
> 
> Basically, the headers at include/linux/dvb were included at the API.
> The Makefile scripting auto-generate references for structs, typedefs
> and ioctls. With this, it is now easy to identify when something is
> missing.
> 
> After adding such logic, I've manually synchronized the specs with the
> header file and updated the data structures.
> 
> The work is not complete yet: there are still several ioctl's not
> documented at the specs:
> 
> Error: no ID for constraint linkend: AUDIO_BILINGUAL_CHANNEL_SELECT.
> Error: no ID for constraint linkend: CA_RESET.
> Error: no ID for constraint linkend: CA_GET_CAP.
> Error: no ID for constraint linkend: CA_GET_SLOT_INFO.
> Error: no ID for constraint linkend: CA_GET_DESCR_INFO.
> Error: no ID for constraint linkend: CA_GET_MSG.
> Error: no ID for constraint linkend: CA_SEND_MSG.
> Error: no ID for constraint linkend: CA_SET_DESCR.
> Error: no ID for constraint linkend: CA_SET_PID.
> Error: no ID for constraint linkend: DMX_GET_PES_PIDS.
> Error: no ID for constraint linkend: DMX_GET_CAPS.
> Error: no ID for constraint linkend: DMX_SET_SOURCE.
> Error: no ID for constraint linkend: DMX_ADD_PID.
> Error: no ID for constraint linkend: DMX_REMOVE_PID.
> Error: no ID for constraint linkend: NET_ADD_IF.
> Error: no ID for constraint linkend: NET_REMOVE_IF.
> Error: no ID for constraint linkend: NET_GET_IF.
> Error: no ID for constraint linkend: VIDEO_GET_SIZE.
> Error: no ID for constraint linkend: VIDEO_GET_FRAME_RATE.
> Error: no ID for constraint linkend: VIDEO_GET_PTS.
> Error: no ID for constraint linkend: VIDEO_GET_FRAME_COUNT.
> Error: no ID for constraint linkend: VIDEO_COMMAND.
> Error: no ID for constraint linkend: VIDEO_TRY_COMMAND.
> 
> I also opted to not add the osd.h header into the DocBook, as it seemed
> odd on my eyes, and it is used only by one legacy hardware.
> 
> While here, I noticed that one audio ioctl is not used anyware
> (AUDIO_GET_PTS). There is just the ioctl definition and that's it. 
> I just removed this definition, as removing it won't cause any 
> regression, as no in-kernel driver or dvb-core uses it.
> 
> Btw, there are several ioctl's and correponding data structures that
> are used on just one or two old drivers. I think we should consider
> to deprecate those old stuff.
> 
> Mauro Carvalho Chehab (13):
>   [media] DocBook: Add the other DVB API header files
>   [media] DocBook/audio.xml: match section ID's with the reference links
>   [media] DocBook/audio.xml: synchronize attribute changes
>   [media] DocBook: Document AUDIO_CONTINUE ioctl
>   [media] dvb/audio.h: Remove definition for AUDIO_GET_PTS
>   [media] Docbook/ca.xml: match section ID's with the reference links
>   [media] DocBook/ca.xml: Describe structure ca_pid
>   [media] DocBook/demux.xml: Fix section references with dmx.h.xml
>   [media] DocBook/demux.xml: Add the remaining data structures to the API spec
>   [media] DocBook/net.xml: Synchronize Network data structure
>   [media] DocBook/Makefile: Remove osd.h header
>   [media] DocBook/video.xml: Fix section references with video.h.xml
>   [media] DocBook/video.xml: Document the remaining data structures

1) INTRODUTION
   ===========

Over the last few days, I did a big effort to identify the gaps between
the code implementation and the media documentation. 

As most of you know, our API's are documented since some time inside the
Linux Kernel tree. However, unfortunately, developers sometimes add
improvements at the drivers without taking enough care of documenting
the changes at the API specs.

The gap at V4L side were solved several years ago, when we've added the
V4L DocBook specs inside the mercurial tree and added some Makefile
and DocBook "magic" to allow discovering that some information were missing[1].
Of course, the logic is not perfect, as it doesn't validate the quality
of the documentation.

For DVB, the situation were worse: while in Kernel, all specs are at DocBook
format (and, thankfully, V4L were already using DocBook), DVB were using
latex format. Worse than that, except for the original writers, the other
DVB developers didn't have the habit to update. So, while the DVB API were
in version 3, the specs were in version 1.

A few years ago, I've ported the DVB docs to DocBook format, migrated the
V4L DocBook format to the one used inside the Kernel, merged both and added
some documentation about IR. The end result is the Media API DocBook:

	http://linuxtv.org/downloads/v4l-dvb-apis/

Due to the differences between DVB and V4L formats, I broke it into two
divisions: one for V4L and one for DVB. Later, the Remote Controller and
the Media Controller divisions were added.

Yet, the DVB documentation were still at version 1. With ISDB-T support,
the specs for version 5 were added. A few other updates were added there,
from time to time, but no major efforts of really updating it to v5 were
done.

Well, Over the last few days, I did a big effort to identify the gaps between
the code implementation and the media documentation, at the DVB side.

-
[1] Basically, the Makefile auto-generate indexes for the data types and
ioctl's. Cross-references between the header files and the specs warrants
that everything is documented, otherwise, an error is generated.


2) CURRENT STATUS
   ==============

After the last day patches, the end result of is that:

	- API gaps on both V4L and DVB parts are now shown;

	- The V4L gaps were already fixed;

	- include/linux/osd.h: the API is not documented. I decided to
keep it outside the documentation, as it is being used only by a legacy
driver, and the API violates several Linux CodingStyle rules. I suspect
that we can just deprecate this API, instead of propagating its usage.

	- 100% of the DVB data structures are now documented;

	- there are 22 DVB ioctl's not documented at the API (excluding
	  the osd ones), from the total amount of 111 ioctl's. So, about
	  20% of the ioctl's are not documented yet.

	- the API specs contain several IOCTL's and data structures
that are used only by one or two old drivers, without any recent
driver needing to use them;

	- there are some overlap area between DVB Video/Audio API's and V4L API;

	- there are some overlap area between DVB Audio API and ALSA API;

	- there are still some gaps at the Remote Controller API. Basically, 
	  the sysfs nodes are not documented yet;

	- currently, there's no Makefile "magic" to double check discrepancies
	  at the Remote Controller and at the Media Controller API's.

3) PROPOSALS
   =========

A badly documented API is something very bad, as:

- userspace developers need to figure out how the driver and core works in
  order to write their code. Worse than that, if a driver has a bug and is
  doing something wrong, the userspace developer may assume that the broken
 behavior is the correct one. So, a latter fix at the driver will break the
 userspace application;

- kernelspace developers may have different opinions about how to implement
  some feature, leading into different, incompatible implementations.

So, we need to be sure that the API is properly documenting what's the expected 
behavior, otherwise the specs are useless.

I got some interesting statistics at the annex part of this RFC. Based on that,
I propose to:

a) Put a notice at the specs that the AUDIO, VIDEO and OSD ioctl's
   are deprecated and shouldn't be used on newer drivers.
   We don't need to remove them from the drivers, but, at least on
   ivtv, we should expand the V4L/ALSA support if needed, in order
   to implement what's missed there.

b) Better analyse the following CA ioctls:
	CA_GET_DESCR_INFO, CA_SET_DESCR (used on bt8xx/dst_ca and av7110_ca);
	CA_SET_PID (used only on bt8xx/dst_ca.c).
As they're implemented only inside two drivers. Maybe they should also be
supported by the dvb core (dvb_ca_en50221.c). None of the above are
documented.

c) Document the ioctl's bellow, as they are used inside the core:
	CA_RESET
	CA_GET_CAP
	CA_GET_SLOT_INFO
	CA_GET_MSG
	CA_SEND_MSG
	DMX_GET_PES_PIDS
	DMX_GET_CAPS
	DMX_SET_SOURCE
	DMX_ADD_PID
	DMX_REMOVE_PID
	NET_ADD_IF
	NET_REMOVE_IF
	NET_GET_IF

d) Marking the removal of the legacy NET ioctls (__NET_ADD_IF_OLD, __NET_GET_IF_OLD)
   at Documentation/feature-removal-schedule.txt for its removal on 3.2.

e) Document the Remote Controller sysfs nodes;

f) Add some logic to compare the API's implemented for RC and Media Controller with
   the *.h files.

Comments?

---


ANNEX) SOME STATISTICS
======================


a) The complete list of ioctl's can be obtained by this small shell script:

$ perl -ne 'print "$1\n" if /\#define\s+([^\s]+)\s+_IO/' include/linux/dvb/*

b) Combining it with git grep, it is clear that there are only 41 ioctl's that
   are implemented inside the DVB core:

$ for i in $(perl -ne 'print "$1\n" if /\#define\s+([^\s]+)\s+_IO/' include/linux/dvb/*); do if [ "$(git grep -l $i drivers/media/dvb/dvb-core/)" != "" ]; then echo $i; fi ; done |wc -l
41

Those ioctl's are:

$ for i in $(perl -ne 'print "$1\n" if /\#define\s+([^\s]+)\s+_IO/' include/linux/dvb/*); do if [ "$(git grep -l $i drivers/media/dvb/dvb-core/)" != "" ]; then echo $i; fi ; done
CA_RESET
CA_GET_CAP
CA_GET_SLOT_INFO
CA_GET_MSG
CA_SEND_MSG
DMX_START
DMX_STOP
DMX_SET_FILTER
DMX_SET_PES_FILTER
DMX_SET_BUFFER_SIZE
DMX_GET_PES_PIDS
DMX_GET_CAPS
DMX_SET_SOURCE
DMX_GET_STC
DMX_ADD_PID
DMX_REMOVE_PID
FE_SET_PROPERTY
FE_GET_PROPERTY
FE_GET_INFO
FE_DISEQC_RESET_OVERLOAD
FE_DISEQC_SEND_MASTER_CMD
FE_DISEQC_RECV_SLAVE_REPLY
FE_DISEQC_SEND_BURST
FE_SET_TONE
FE_SET_VOLTAGE
FE_ENABLE_HIGH_LNB_VOLTAGE
FE_READ_STATUS
FE_READ_BER
FE_READ_SIGNAL_STRENGTH
FE_READ_SNR
FE_READ_UNCORRECTED_BLOCKS
FE_SET_FRONTEND
FE_GET_FRONTEND
FE_SET_FRONTEND_TUNE_MODE
FE_GET_EVENT
FE_DISHNETWORK_SEND_LEGACY_CMD
NET_ADD_IF
NET_REMOVE_IF
NET_GET_IF
__NET_ADD_IF_OLD
__NET_GET_IF_OLD

The last two ones are obsolete ioctl's.

c) If we do a grep -v removing the above from the list of the ioctls, we have
   the ioctl's that are implemented only inside the drivers:

AUDIO_STOP
AUDIO_PLAY
AUDIO_PAUSE
AUDIO_CONTINUE
AUDIO_SELECT_SOURCE
AUDIO_SET_MUTE
AUDIO_SET_AV_SYNC
AUDIO_SET_BYPASS_MODE
AUDIO_CLEAR_BUFFER
AUDIO_SET_ID
AUDIO_SET_MIXER
AUDIO_SET_STREAMTYPE
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
AUDIO_STOP
AUDIO_PLAY
AUDIO_PAUSE
AUDIO_CONTINUE
AUDIO_SELECT_SOURCE
AUDIO_SET_MUTE
AUDIO_SET_AV_SYNC
AUDIO_SET_BYPASS_MODE
AUDIO_CHANNEL_SELECT
AUDIO_GET_STATUS
AUDIO_GET_CAPABILITIES
AUDIO_CLEAR_BUFFER
AUDIO_SET_ID
AUDIO_SET_MIXER
AUDIO_SET_STREAMTYPE
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
CA_GET_DESCR_INFO
CA_SET_DESCR
CA_SET_PID
OSD_SEND_CMD
OSD_GET_CAPABILITY
VIDEO_STOP
VIDEO_PLAY
VIDEO_FREEZE
VIDEO_CONTINUE
VIDEO_SELECT_SOURCE
VIDEO_SET_BLANK
VIDEO_GET_STATUS
VIDEO_GET_EVENT
VIDEO_SET_DISPLAY_FORMAT
VIDEO_STILLPICTURE
VIDEO_FAST_FORWARD
VIDEO_SLOWMOTION
VIDEO_GET_CAPABILITIES
VIDEO_CLEAR_BUFFER
VIDEO_SET_ID
VIDEO_SET_STREAMTYPE
VIDEO_SET_FORMAT
VIDEO_SET_SYSTEM
VIDEO_SET_HIGHLIGHT
VIDEO_SET_SPU
VIDEO_SET_SPU_PALETTE
VIDEO_GET_NAVI
VIDEO_SET_ATTRIBUTES
VIDEO_GET_SIZE
VIDEO_GET_FRAME_RATE
VIDEO_GET_PTS
VIDEO_GET_FRAME_COUNT
VIDEO_COMMAND
VIDEO_TRY_COMMAND

d) The API usage inside drivers/media and drivers/staging is given by:

$ for i in $(perl -ne 'print "$1\n" if /\#define\s+([^\s]+)\s+_IO/' include/linux/dvb/*); do echo $i; git grep -l $i drivers/media/ drivers/staging/ ; done
AUDIO_STOP
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PAUSE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MUTE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_SET_AV_SYNC
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_BYPASS_MODE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CHANNEL_SELECT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_ID
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MIXER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_STOP
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_PAUSE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MUTE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_SET_AV_SYNC
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_BYPASS_MODE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CHANNEL_SELECT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
AUDIO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_ID
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_MIXER
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
AUDIO_SET_EXT_ID
AUDIO_SET_ATTRIBUTES
AUDIO_SET_KARAOKE
AUDIO_BILINGUAL_CHANNEL_SELECT
drivers/media/video/ivtv/ivtv-ioctl.c
CA_RESET
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-avc.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_CAP
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_SLOT_INFO
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_DESCR_INFO
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_GET_MSG
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SEND_MSG
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
drivers/media/dvb/firewire/firedtv-ci.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SET_DESCR
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/ttpci/av7110_ca.c
CA_SET_PID
drivers/media/dvb/bt8xx/dst_ca.c
DMX_START
drivers/media/dvb/dvb-core/dmxdev.c
DMX_STOP
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_FILTER
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_PES_FILTER
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_BUFFER_SIZE
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_PES_PIDS
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_CAPS
drivers/media/dvb/dvb-core/dmxdev.c
DMX_SET_SOURCE
drivers/media/dvb/dvb-core/dmxdev.c
DMX_GET_STC
drivers/media/dvb/dvb-core/dmxdev.c
DMX_ADD_PID
drivers/media/dvb/dvb-core/dmxdev.c
DMX_REMOVE_PID
drivers/media/dvb/dvb-core/dmxdev.c
FE_SET_PROPERTY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_PROPERTY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_INFO
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_RESET_OVERLOAD
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_SEND_MASTER_CMD
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_RECV_SLAVE_REPLY
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISEQC_SEND_BURST
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_TONE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_VOLTAGE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_ENABLE_HIGH_LNB_VOLTAGE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_STATUS
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/si21xx.c
drivers/media/dvb/frontends/stv0288.c
drivers/media/dvb/frontends/stv0299.c
FE_READ_BER
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_SIGNAL_STRENGTH
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/stv0299.c
FE_READ_SNR
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_READ_UNCORRECTED_BLOCKS
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_FRONTEND
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/frontends/si21xx.c
drivers/media/dvb/frontends/stv0288.c
drivers/media/dvb/frontends/stv0299.c
drivers/media/video/cx23885/cx23885-dvb.c
FE_GET_FRONTEND
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_SET_FRONTEND_TUNE_MODE
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_GET_EVENT
drivers/media/dvb/dvb-core/dvb_frontend.c
FE_DISHNETWORK_SEND_LEGACY_CMD
drivers/media/dvb/dvb-core/dvb_frontend.c
NET_ADD_IF
drivers/media/dvb/dvb-core/dvb_net.c
NET_REMOVE_IF
drivers/media/dvb/dvb-core/dvb_net.c
NET_GET_IF
drivers/media/dvb/dvb-core/dvb_net.c
__NET_ADD_IF_OLD
drivers/media/dvb/dvb-core/dvb_net.c
drivers/media/dvb/ttpci/av7110.c
OSD_GET_CAPABILITY
drivers/media/dvb/ttpci/av7110.c
VIDEO_STOP
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_PLAY
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_FREEZE
drivers/media/dvb/ttpci/av7110.c
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_CONTINUE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SELECT_SOURCE
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SET_BLANK
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_STATUS
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_EVENT
drivers/media/dvb/ttpci/av7110_av.c
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_SET_DISPLAY_FORMAT
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_STILLPICTURE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_FAST_FORWARD
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SLOWMOTION
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_CAPABILITIES
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_CLEAR_BUFFER
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_ID
VIDEO_SET_STREAMTYPE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_FORMAT
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_SET_SYSTEM
VIDEO_SET_HIGHLIGHT
VIDEO_SET_SPU
VIDEO_SET_SPU_PALETTE
VIDEO_GET_NAVI
VIDEO_SET_ATTRIBUTES
VIDEO_GET_SIZE
drivers/media/dvb/ttpci/av7110_av.c
VIDEO_GET_FRAME_RATE
VIDEO_GET_PTS
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_GET_FRAME_COUNT
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_COMMAND
drivers/media/dvb/ttpci/av7110_hw.h
drivers/media/video/ivtv/ivtv-ioctl.c
VIDEO_TRY_COMMAND
drivers/media/video/ivtv/ivtv-ioctl.c

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09  1:20 ` RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: " Mauro Carvalho Chehab
@ 2011-06-09  7:08   ` Hans Verkuil
  2011-06-09  7:58     ` Hans Verkuil
  2011-06-09 12:37     ` Mauro Carvalho Chehab
  0 siblings, 2 replies; 12+ messages in thread
From: Hans Verkuil @ 2011-06-09  7:08 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List

On Thursday, June 09, 2011 03:20:43 Mauro Carvalho Chehab wrote:
> 2) CURRENT STATUS
>    ==============
> 
> After the last day patches, the end result of is that:
> 
> 	- API gaps on both V4L and DVB parts are now shown;
> 
> 	- The V4L gaps were already fixed;
> 
> 	- include/linux/osd.h: the API is not documented. I decided to
> keep it outside the documentation, as it is being used only by a legacy
> driver, and the API violates several Linux CodingStyle rules. I suspect
> that we can just deprecate this API, instead of propagating its usage.

Agreed.

> 	- 100% of the DVB data structures are now documented;

Great!

> 	- there are 22 DVB ioctl's not documented at the API (excluding
> 	  the osd ones), from the total amount of 111 ioctl's. So, about
> 	  20% of the ioctl's are not documented yet.
> 
> 	- the API specs contain several IOCTL's and data structures
> that are used only by one or two old drivers, without any recent
> driver needing to use them;
> 
> 	- there are some overlap area between DVB Video/Audio API's and V4L API;
> 
> 	- there are some overlap area between DVB Audio API and ALSA API;
> 
> 	- there are still some gaps at the Remote Controller API. Basically, 
> 	  the sysfs nodes are not documented yet;
> 
> 	- currently, there's no Makefile "magic" to double check discrepancies
> 	  at the Remote Controller and at the Media Controller API's.
> 
> 3) PROPOSALS
>    =========
> 
> A badly documented API is something very bad, as:
> 
> - userspace developers need to figure out how the driver and core works in
>   order to write their code. Worse than that, if a driver has a bug and is
>   doing something wrong, the userspace developer may assume that the broken
>  behavior is the correct one. So, a latter fix at the driver will break the
>  userspace application;
> 
> - kernelspace developers may have different opinions about how to implement
>   some feature, leading into different, incompatible implementations.
> 
> So, we need to be sure that the API is properly documenting what's the expected 
> behavior, otherwise the specs are useless.
> 
> I got some interesting statistics at the annex part of this RFC. Based on that,
> I propose to:
> 
> a) Put a notice at the specs that the AUDIO, VIDEO and OSD ioctl's
>    are deprecated and shouldn't be used on newer drivers.
>    We don't need to remove them from the drivers, but, at least on
>    ivtv, we should expand the V4L/ALSA support if needed, in order
>    to implement what's missed there.

Agreed.

> d) The API usage inside drivers/media and drivers/staging is given by:

I'll comment on those ioctls used by ivtv:

> AUDIO_SET_MUTE
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c

Used to mute the audio when playing back an mpeg stream.

We can use the AUDIO_MUTE control for this. This will require some work in
ivtv since at the moment all video nodes share the same controls. In this case
the video output node should get its own MUTE control.

> AUDIO_CHANNEL_SELECT
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c

How to playback normal MPEG audio: left, right, stereo, swapped.

> AUDIO_BILINGUAL_CHANNEL_SELECT
> drivers/media/video/ivtv/ivtv-ioctl.c

How to playback bilingual MPEG audio: left, right, stereo, swapped.

The decoder will automatically detect whether the source is bilingual or not
and select either CHANNEL_SELECT or BILINGUAL_CHANNEL_SELECT as needed for the
audio output.

I'm not sure what to do with these. There are multiple options:

- Reimplement them as menu controls.
- Add them to VIDIOC_DECODER_CMD, either as a separate command or as part of
  the PLAY command. I'm not enthusiastic about this since these properties
  can be changed while decoding is in progress. It does not really fit my
  idea of a 'decoder command'.
- Add support for this to VIDIOC_G/S_AUDOUT. Any decoder with audio output
  should have this ioctl. There is a currently unused 'mode' field in struct
  v4l2_audioout that might be used for this purpose.

I think either controls or using AUDOUT is the way to go. I am leaning towards
controls since they will automatically appear in properly written applications
and this is really a user-driven setting. And with menu controls it is easy
to extend the number of options.

> VIDEO_STOP
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c
> VIDEO_PLAY
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c
> VIDEO_FREEZE
> drivers/media/dvb/ttpci/av7110.c
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c
> VIDEO_CONTINUE
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c

Stop/Play/Pause/Continue MPEG decoding.

There should all be deprecated and replaced with VIDIOC_DECODER_CMD.

> VIDEO_SELECT_SOURCE
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c

Select passthrough mode where the input is directly linked to the output in
the hardware. This really changes the topology of the device. The media
controller does just that, so ivtv should implement the MC.

There are no applications that use this to my knowledge other than ivtv-ctl
in v4l-utils.

> VIDEO_GET_EVENT
> drivers/media/dvb/ttpci/av7110_av.c
> drivers/media/video/ivtv/ivtv-ioctl.c

Already deprecated: use the V4L event APIs for that (VIDIOC_DQEVENT et al).

> AUDIO_SET_EXT_ID
> AUDIO_SET_ATTRIBUTES
> AUDIO_SET_KARAOKE
> VIDEO_SET_SYSTEM
> VIDEO_SET_HIGHLIGHT
> VIDEO_SET_SPU
> VIDEO_SET_SPU_PALETTE
> VIDEO_GET_NAVI
> VIDEO_SET_ATTRIBUTES
> VIDEO_SET_ID
> VIDEO_GET_FRAME_RATE

These are only seen in audio.h/video.h and fs/compat_ioctl.c. Remove these
ioctls + associated structs?

> VIDEO_GET_PTS
> drivers/media/video/ivtv/ivtv-ioctl.c

Returns the current PTS of the decoder. Perhaps a read-only MPEG control is
more suitable?

> VIDEO_GET_FRAME_COUNT
> drivers/media/video/ivtv/ivtv-ioctl.c

Returns the number of decoded frames since the decoder started. Make this a
read-only MPEG control?

> VIDEO_COMMAND
> drivers/media/dvb/ttpci/av7110_hw.h
> drivers/media/video/ivtv/ivtv-ioctl.c
> VIDEO_TRY_COMMAND
> drivers/media/video/ivtv/ivtv-ioctl.c

These to command the decoder (play/stop/pause/continue with various additional
flags/attributes to facilitate fast/slow forward/backward). This should become
a traditional V4L2 API: VIDIOC_(TRY_)DECODER_CMD.

So, to summarize: in order to add the decoder API to V4L2 we would need to do:

- Add two controls to select the audio output channels.
- Add two read-only controls for the PTS and frame count.
- Copy and paste the old VIDEO_(TRY_)COMMAND to VIDIOC_(TRY_)DECODER_CMD.

And ivtv needs to use the MC and implement AUDIO_MUTE for output video nodes.

Comments? If not, then I'll see if I can work on an RFC for this next week.
It's less work than I expected.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09  7:08   ` Hans Verkuil
@ 2011-06-09  7:58     ` Hans Verkuil
  2011-06-09 12:37     ` Mauro Carvalho Chehab
  1 sibling, 0 replies; 12+ messages in thread
From: Hans Verkuil @ 2011-06-09  7:58 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Mauro Carvalho Chehab, Linux Media Mailing List

>> AUDIO_SET_EXT_ID
>> AUDIO_SET_ATTRIBUTES
>> AUDIO_SET_KARAOKE
>> VIDEO_SET_SYSTEM
>> VIDEO_SET_HIGHLIGHT
>> VIDEO_SET_SPU
>> VIDEO_SET_SPU_PALETTE
>> VIDEO_GET_NAVI
>> VIDEO_SET_ATTRIBUTES
>> VIDEO_SET_ID
>> VIDEO_GET_FRAME_RATE
>
> These are only seen in audio.h/video.h and fs/compat_ioctl.c. Remove these
> ioctls + associated structs?

I meant of course: 'mark for removal'.

Basically all the AUDIO, VIDEO and OSD ioctls should be removed eventually
as a general API: they are really a poor-man's V4L and have nothing to do
with DVB.

The first step is to get ivtv converted so that av7110 is the only one
still using them. ivtv will still need to have a small backwards
compatibility layer, but at least there is no more need to keep these
ioctls in DocBook.

Regards,

     Hans


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09  7:08   ` Hans Verkuil
  2011-06-09  7:58     ` Hans Verkuil
@ 2011-06-09 12:37     ` Mauro Carvalho Chehab
  1 sibling, 0 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-09 12:37 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux Media Mailing List

Em 09-06-2011 04:08, Hans Verkuil escreveu:
> On Thursday, June 09, 2011 03:20:43 Mauro Carvalho Chehab wrote:
>> d) The API usage inside drivers/media and drivers/staging is given by:
> 
> I'll comment on those ioctls used by ivtv:
> 
>> AUDIO_SET_MUTE
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Used to mute the audio when playing back an mpeg stream.
> 
> We can use the AUDIO_MUTE control for this. This will require some work in
> ivtv since at the moment all video nodes share the same controls. In this case
> the video output node should get its own MUTE control.
> 
>> AUDIO_CHANNEL_SELECT
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> How to playback normal MPEG audio: left, right, stereo, swapped.
> 
>> AUDIO_BILINGUAL_CHANNEL_SELECT
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> How to playback bilingual MPEG audio: left, right, stereo, swapped.
> 
> The decoder will automatically detect whether the source is bilingual or not
> and select either CHANNEL_SELECT or BILINGUAL_CHANNEL_SELECT as needed for the
> audio output.
> 
> I'm not sure what to do with these. There are multiple options:
> 
> - Reimplement them as menu controls.
> - Add them to VIDIOC_DECODER_CMD, either as a separate command or as part of
>   the PLAY command. I'm not enthusiastic about this since these properties
>   can be changed while decoding is in progress. It does not really fit my
>   idea of a 'decoder command'.
> - Add support for this to VIDIOC_G/S_AUDOUT. Any decoder with audio output
>   should have this ioctl. There is a currently unused 'mode' field in struct
>   v4l2_audioout that might be used for this purpose.
> 
> I think either controls or using AUDOUT is the way to go. I am leaning towards
> controls since they will automatically appear in properly written applications
> and this is really a user-driven setting. And with menu controls it is easy
> to extend the number of options.

I think that using AUDOUT would be more coherent. There are two fields there 
that are reserved: "capability" and "mode". We can add capability
flags to indicate that the audout supports channel mode changes and use the
"mode" on a way similar to rxsubchans to select between the channel outputs.

Yet, MPEG AAC supports up to 48 channels and multiple languages. We may
need to have a way to get the information from the hardware about what
channels are available, and how they're grouped.

>> VIDEO_STOP
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
>> VIDEO_PLAY
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
>> VIDEO_FREEZE
>> drivers/media/dvb/ttpci/av7110.c
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
>> VIDEO_CONTINUE
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Stop/Play/Pause/Continue MPEG decoding.
> 
> There should all be deprecated and replaced with VIDIOC_DECODER_CMD.

Another alternative would be to consider:
	VIDIOC_STREAMON = VIDEO_PLAY
	VIDIOC_STREAMOFF = VIDEO_STOP
And add VIDIOC_FREEZE/VIDIOC_CONTINUE.

Adding a VIDIOC_DECODER_CMD ioctl that also controls play/stop seems
to be a bad idea, as we'll have some API overlap here.

>> VIDEO_SELECT_SOURCE
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Select passthrough mode where the input is directly linked to the output in
> the hardware. This really changes the topology of the device. The media
> controller does just that, so ivtv should implement the MC.
> 
> There are no applications that use this to my knowledge other than ivtv-ctl
> in v4l-utils.

We don't need to use MC for that. The VIDIOC_*_AUDIOOUT already provides the
elements to enumerate and select the audio output.

>> VIDEO_GET_EVENT
>> drivers/media/dvb/ttpci/av7110_av.c
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Already deprecated: use the V4L event APIs for that (VIDIOC_DQEVENT et al).

OK.

>> AUDIO_SET_EXT_ID
>> AUDIO_SET_ATTRIBUTES
>> AUDIO_SET_KARAOKE
>> VIDEO_SET_SYSTEM
>> VIDEO_SET_HIGHLIGHT
>> VIDEO_SET_SPU
>> VIDEO_SET_SPU_PALETTE
>> VIDEO_GET_NAVI
>> VIDEO_SET_ATTRIBUTES
>> VIDEO_SET_ID
>> VIDEO_GET_FRAME_RATE
> 
> These are only seen in audio.h/video.h and fs/compat_ioctl.c. Remove these
> ioctls + associated structs?

Yes, that sounds the right way to do it. As nobody is using it, I don't think
we need to add it at the list of the Kernel features to be removed. as this
is unused stuff. So, no regressions will happen.

> 
>> VIDEO_GET_PTS
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Returns the current PTS of the decoder. Perhaps a read-only MPEG control is
> more suitable?

Yes, a MPEG control for it seems to be enough.

>> VIDEO_GET_FRAME_COUNT
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> Returns the number of decoded frames since the decoder started. Make this a
> read-only MPEG control?

Yes, a MPEG control for it seems to be enough.

>> VIDEO_COMMAND
>> drivers/media/dvb/ttpci/av7110_hw.h
>> drivers/media/video/ivtv/ivtv-ioctl.c
>> VIDEO_TRY_COMMAND
>> drivers/media/video/ivtv/ivtv-ioctl.c
> 
> These to command the decoder (play/stop/pause/continue with various additional
> flags/attributes to facilitate fast/slow forward/backward). This should become
> a traditional V4L2 API: VIDIOC_(TRY_)DECODER_CMD.

Ah, now I see why you're proposing a decoder command: due to those additional flags.
Ok, it may actually make sense, but I would avoid to do overlaps with 
VIDIOC_STREAMON/STREAMOFF, as it may make the API messy.

> So, to summarize: in order to add the decoder API to V4L2 we would need to do:
> 
> - Add two controls to select the audio output channels.
> - Add two read-only controls for the PTS and frame count.
> - Copy and paste the old VIDEO_(TRY_)COMMAND to VIDIOC_(TRY_)DECODER_CMD.
> 
> And ivtv needs to use the MC and implement AUDIO_MUTE for output video nodes.
> 
> Comments? If not, then I'll see if I can work on an RFC for this next week.
> It's less work than I expected.

Cheers,
Mauro

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-08 21:38   ` Mauro Carvalho Chehab
@ 2011-06-09 12:51     ` Andreas Oberritter
  2011-06-09 13:16       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 12+ messages in thread
From: Andreas Oberritter @ 2011-06-09 12:51 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Hans Verkuil, Linux Media Mailing List

On 06/08/2011 11:38 PM, Mauro Carvalho Chehab wrote:
> - all AUDIO*, OSD* and VIDEO* are used only by av7110 and ivtv.
> 
> - The CA* ioctls are used by core (although several are only implemented
>   inside a few drivers);

All (or most) of these ioctls (except OSD, which AFAIR has been
deprecated since v3) are used by out-of-tree drivers. av7110 and ivtv
just happen to be the only in-tree drivers supporting audio and video
decoders.

Regards,
Andreas

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-08 20:23 [PATCH 00/13] Reduce the gap between DVBv5 API and the specs Mauro Carvalho Chehab
  2011-06-08 20:59 ` Hans Verkuil
  2011-06-09  1:20 ` RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: " Mauro Carvalho Chehab
@ 2011-06-09 13:06 ` Manu Abraham
  2011-06-09 13:19   ` Mauro Carvalho Chehab
  2 siblings, 1 reply; 12+ messages in thread
From: Manu Abraham @ 2011-06-09 13:06 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List

On 6/9/11, Mauro Carvalho Chehab <mchehab@redhat.com> wrote:
> There's a huge gap between the DVB specs and the current implementation.
> This were caused by years of changes that happened at the code but
> no updates to the specs were done.
>
> This patch series tries to reduce this gap.
>
> Basically, the headers at include/linux/dvb were included at the API.
> The Makefile scripting auto-generate references for structs, typedefs
> and ioctls. With this, it is now easy to identify when something is
> missing.
>
> After adding such logic, I've manually synchronized the specs with the
> header file and updated the data structures.
>
> The work is not complete yet: there are still several ioctl's not
> documented at the specs:

> While here, I noticed that one audio ioctl is not used anyware
> (AUDIO_GET_PTS). There is just the ioctl definition and that's it.
> I just removed this definition, as removing it won't cause any
> regression, as no in-kernel driver or dvb-core uses it.


Please do not apply this patch; the SAA716x FF DVB driver uses the same ioctl.

Best Regards,
Manu

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09 12:51     ` Andreas Oberritter
@ 2011-06-09 13:16       ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-09 13:16 UTC (permalink / raw)
  To: Andreas Oberritter; +Cc: Hans Verkuil, Linux Media Mailing List

Hi Andreas,

Em 09-06-2011 09:51, Andreas Oberritter escreveu:
> On 06/08/2011 11:38 PM, Mauro Carvalho Chehab wrote:
>> - all AUDIO*, OSD* and VIDEO* are used only by av7110 and ivtv.
>>
>> - The CA* ioctls are used by core (although several are only implemented
>>   inside a few drivers);
> 
> All (or most) of these ioctls (except OSD, which AFAIR has been
> deprecated since v3) are used by out-of-tree drivers. av7110 and ivtv
> just happen to be the only in-tree drivers supporting audio and video
> decoders.

We should not care with drivers that will never be upstream. 

Those out-of-tree drivers are there just because they're still being prepared for
submission, or because the driver maintainers decided that they won't submit
upstream?

In the first case, I think we should try to merge those drivers first, 
before taking any decision about any API removal/change. So, maybe we can
postpone any API removal decision to kernel 3.2, in order to merge those
drivers upstream.

Thanks,
Mauro.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09 13:06 ` Manu Abraham
@ 2011-06-09 13:19   ` Mauro Carvalho Chehab
  2011-06-09 13:21     ` Manu Abraham
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-09 13:19 UTC (permalink / raw)
  To: Manu Abraham; +Cc: Linux Media Mailing List, Andreas Oberritter

Em 09-06-2011 10:06, Manu Abraham escreveu:
> On 6/9/11, Mauro Carvalho Chehab <mchehab@redhat.com> wrote:
>> There's a huge gap between the DVB specs and the current implementation.
>> This were caused by years of changes that happened at the code but
>> no updates to the specs were done.
>>
>> This patch series tries to reduce this gap.
>>
>> Basically, the headers at include/linux/dvb were included at the API.
>> The Makefile scripting auto-generate references for structs, typedefs
>> and ioctls. With this, it is now easy to identify when something is
>> missing.
>>
>> After adding such logic, I've manually synchronized the specs with the
>> header file and updated the data structures.
>>
>> The work is not complete yet: there are still several ioctl's not
>> documented at the specs:
> 
>> While here, I noticed that one audio ioctl is not used anyware
>> (AUDIO_GET_PTS). There is just the ioctl definition and that's it.
>> I just removed this definition, as removing it won't cause any
>> regression, as no in-kernel driver or dvb-core uses it.
> 
> 
> Please do not apply this patch; the SAA716x FF DVB driver uses the same ioctl.

I'll revert this patch for now, in order to wait for driver submissions
that use this ioctl (and the other ioctl's that are not used anywhere
inside the Kernel).

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 00/13] Reduce the gap between DVBv5 API and the specs
  2011-06-09 13:19   ` Mauro Carvalho Chehab
@ 2011-06-09 13:21     ` Manu Abraham
  0 siblings, 0 replies; 12+ messages in thread
From: Manu Abraham @ 2011-06-09 13:21 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List, Andreas Oberritter

On 6/9/11, Mauro Carvalho Chehab <mchehab@redhat.com> wrote:
> Em 09-06-2011 10:06, Manu Abraham escreveu:
>> On 6/9/11, Mauro Carvalho Chehab <mchehab@redhat.com> wrote:
>>> There's a huge gap between the DVB specs and the current implementation.
>>> This were caused by years of changes that happened at the code but
>>> no updates to the specs were done.
>>>
>>> This patch series tries to reduce this gap.
>>>
>>> Basically, the headers at include/linux/dvb were included at the API.
>>> The Makefile scripting auto-generate references for structs, typedefs
>>> and ioctls. With this, it is now easy to identify when something is
>>> missing.
>>>
>>> After adding such logic, I've manually synchronized the specs with the
>>> header file and updated the data structures.
>>>
>>> The work is not complete yet: there are still several ioctl's not
>>> documented at the specs:
>>
>>> While here, I noticed that one audio ioctl is not used anyware
>>> (AUDIO_GET_PTS). There is just the ioctl definition and that's it.
>>> I just removed this definition, as removing it won't cause any
>>> regression, as no in-kernel driver or dvb-core uses it.
>>
>>
>> Please do not apply this patch; the SAA716x FF DVB driver uses the same
>> ioctl.
>
> I'll revert this patch for now, in order to wait for driver submissions
> that use this ioctl (and the other ioctl's that are not used anywhere
> inside the Kernel).


Thanks!

Best Regards,
Manu

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-06-09 13:21 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-08 20:23 [PATCH 00/13] Reduce the gap between DVBv5 API and the specs Mauro Carvalho Chehab
2011-06-08 20:59 ` Hans Verkuil
2011-06-08 21:38   ` Mauro Carvalho Chehab
2011-06-09 12:51     ` Andreas Oberritter
2011-06-09 13:16       ` Mauro Carvalho Chehab
2011-06-09  1:20 ` RFC] Media kernelspace-userspace API specs (V4L/DVB/IR) - Was: " Mauro Carvalho Chehab
2011-06-09  7:08   ` Hans Verkuil
2011-06-09  7:58     ` Hans Verkuil
2011-06-09 12:37     ` Mauro Carvalho Chehab
2011-06-09 13:06 ` Manu Abraham
2011-06-09 13:19   ` Mauro Carvalho Chehab
2011-06-09 13:21     ` Manu Abraham

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.