Re: RFC: Core + Radio profile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em 22-08-2012 12:19, Mike Isely escreveu:
> On Wed, 22 Aug 2012, Mauro Carvalho Chehab wrote:
> 
>> Em 22-08-2012 07:11, Hans Verkuil escreveu:
>>> I've added some more core profile requirements.
>>
>>>>
>>>> Streaming I/O is not supported by radio nodes.
>>
>> 	Hmm... pvrusb2/ivtv? Ok, it makes sense to move it to use the alsa
>> mpeg API there. If we're enforcing it, we should deprecate the current way
>> there, and make it use ALSA.
> 
> I am unaware of any ALSA MPEG API.  It's entirely likely that this is 
> because I haven't been paying attention.  Nevertheless, can you please 
> point me at any documentation on this so I can get up to speed?


I don't know much about that. A grep at sound might help:

$ git grep -i mpeg sound/
sound/core/oss/pcm_oss.c: case AFMT_MPEG:         return SNDRV_PCM_FORMAT_MPEG;
sound/core/oss/pcm_oss.c: case SNDRV_PCM_FORMAT_MPEG:             return AFMT_MPEG;
sound/core/pcm.c: FORMAT(MPEG),
sound/core/pcm.c: case AFMT_MPEG:
sound/core/pcm.c:         return "MPEG";
sound/core/pcm_misc.c:    [SNDRV_PCM_FORMAT_MPEG] = {
sound/drivers/vx/vx_cmd.h:#define MASK_VALID_PIPE_MPEG_PARAM      0x000040
sound/drivers/vx/vx_cmd.h:#define MASK_SET_PIPE_MPEG_PARAM        0x000002
sound/drivers/vx/vx_cmd.h:#define P_PREPARE_FOR_MPEG3_MASK        
sound/drivers/vx/vx_core.c:       if (chip->audio_info & VX_AUDIO_INFO_MPEG1)
sound/drivers/vx/vx_core.c:               snd_iprintf(buffer, " mpeg1");
sound/drivers/vx/vx_core.c:       if (chip->audio_info & VX_AUDIO_INFO_MPEG2)
sound/drivers/vx/vx_core.c:               snd_iprintf(buffer, " mpeg2");
sound/pci/asihpi/asihpi.c:        -1,                     /* HPI_FORMAT_MPEG_L1              3 */
sound/pci/asihpi/asihpi.c:        SNDRV_PCM_FORMAT_MPEG,  /* HPI_FORMAT_MPEG_L2              4 */
sound/pci/asihpi/asihpi.c:        SNDRV_PCM_FORMAT_MPEG,  /* HPI_FORMAT_MPEG_L3              5 */
sound/pci/asihpi/hpi.h:/** MPEG-1 Layer-1. */
sound/pci/asihpi/hpi.h:   HPI_FORMAT_MPEG_L1 = 3,
sound/pci/asihpi/hpi.h:/** MPEG-1 Layer-2.
sound/pci/asihpi/hpi.h:Windows equivalent is WAVE_FORMAT_MPEG.
sound/pci/asihpi/hpi.h:   HPI_FORMAT_MPEG_L2 = 4,
sound/pci/asihpi/hpi.h:/** MPEG-1 Layer-3.
sound/pci/asihpi/hpi.h:Windows equivalent is WAVE_FORMAT_MPEG.
sound/pci/asihpi/hpi.h:   HPI_FORMAT_MPEG_L3 = 5,
sound/pci/asihpi/hpi.h:#define HPI_CAPABILITY_MPEG_LAYER3      (1)
sound/pci/asihpi/hpi.h:/** MPEG Ancillary Data modes
sound/pci/asihpi/hpi.h:enum HPI_MPEG_ANC_MODES {
sound/pci/asihpi/hpi.h:   /** the MPEG frames have energy information stored in them (5 bytes per stereo frame, 3 per mono) */
sound/pci/asihpi/hpi.h:   HPI_MPEG_ANC_HASENERGY = 0,
sound/pci/asihpi/hpi.h:   HPI_MPEG_ANC_RAW = 1
sound/pci/asihpi/hpi.h:enum HPI_ISTREAM_MPEG_ANC_ALIGNS {
sound/pci/asihpi/hpi.h:   HPI_MPEG_ANC_ALIGN_LEFT = 0,
sound/pci/asihpi/hpi.h:   HPI_MPEG_ANC_ALIGN_RIGHT = 1
sound/pci/asihpi/hpi.h:/** MPEG modes
sound/pci/asihpi/hpi.h:MPEG modes - can be used optionally for HPI_FormatCreate()
sound/pci/asihpi/hpi.h:Using any mode setting other than HPI_MPEG_MODE_DEFAULT
sound/pci/asihpi/hpi.h:enum HPI_MPEG_MODES {
sound/pci/asihpi/hpi.h:/** Causes the MPEG-1 Layer II bitstream to be recorded
sound/pci/asihpi/hpi.h:   HPI_MPEG_MODE_DEFAULT = 0,
sound/pci/asihpi/hpi.h:   HPI_MPEG_MODE_STEREO = 1,
sound/pci/asihpi/hpi.h:   HPI_MPEG_MODE_JOINTSTEREO = 2,
sound/pci/asihpi/hpi.h:   HPI_MPEG_MODE_DUALCHANNEL = 3
sound/pci/asihpi/hpi.h:/** maximum number of ancillary bytes per MPEG frame */
sound/pci/asihpi/hpi.h:   u32 bit_rate;             /**< for MPEG */
sound/pci/asihpi/hpi.h:   u16 format;       /**< HPI_FORMAT_PCM16, _MPEG etc. see #HPI_FORMATS. */
sound/pci/asihpi/hpi_internal.h:  u32 bit_rate; /**< for MPEG */
sound/pci/asihpi/hpi_internal.h:  u16 format; /**< HPI_FORMAT_PCM16, _MPEG etc. see \ref HPI_FORMATS. */
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L1:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L2:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L3:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L1:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L2:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L3:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L2:
sound/pci/asihpi/hpifunc.c:                       && (attributes != HPI_MPEG_MODE_DEFAULT)) {
sound/pci/asihpi/hpifunc.c:                       attributes = HPI_MPEG_MODE_DEFAULT;
sound/pci/asihpi/hpifunc.c:               } else if (attributes > HPI_MPEG_MODE_DUALCHANNEL) {
sound/pci/asihpi/hpifunc.c:                       attributes = HPI_MPEG_MODE_DEFAULT;
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L1:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L2:
sound/pci/asihpi/hpifunc.c:       case HPI_FORMAT_MPEG_L3:
sound/pci/bt87x.c: * (DVB cards use the audio function to transfer MPEG data) */
sound/pci/ens1370.c:#define   ES_MSFMTSEL         (1<<15)         /* MPEG serial data format; 0 = SONY, 1 = I2S */
sound/pci/ens1370.c:#define   ES_1370_M_SBB               (1<<14)         /* clock source for DAC - 0 = clock generator; 1 = MPEG clocks */
sound/pci/ens1370.c:#define   ES_1370_M_CB                (1<<9)          /* capture clock source; 0 = ADC; 1 = MPEG */
sound/pci/hda/hda_eld.c:  AUDIO_CODING_TYPE_MPEG1                 =  3,
sound/pci/hda/hda_eld.c:  AUDIO_CODING_TYPE_MPEG2                 =  5,
sound/pci/hda/hda_eld.c:  AUDIO_CODING_TYPE_MPEG_SURROUND         = 17,
sound/pci/hda/hda_eld.c:  AUDIO_CODING_XTYPE_MPEG_SURROUND        = 3,
sound/pci/hda/hda_eld.c:  /*  3 */ "MPEG1",
sound/pci/hda/hda_eld.c:  /*  5 */ "MPEG2",
sound/pci/hda/hda_eld.c:  /* 17 */ "MPEG Surround",
sound/pci/hda/hda_eld.c:  case AUDIO_CODING_TYPE_MPEG1:
sound/pci/hda/hda_eld.c:  case AUDIO_CODING_TYPE_MPEG2:
sound/pci/mixart/mixart_core.h:   CT_MPEG_L1,
sound/pci/mixart/mixart_core.h:   CT_MPEG_L2,
sound/pci/mixart/mixart_core.h:   CT_MPEG_L3,
sound/pci/mixart/mixart_core.h:   CT_MPEG_L3_LSF,
sound/pci/mixart/mixart_core.h:                   u32 mpeg_layer;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_mode;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_mode_extension;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_pre_emphasis;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_has_padding_bit;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_has_crc;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_has_extension;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_is_original;
sound/pci/mixart/mixart_core.h:                   u32 mpeg_has_copyright;
sound/pci/mixart/mixart_core.h:           } mpeg_format_info;
sound/usb/format.c:       case UAC_FORMAT_TYPE_II_MPEG:
sound/usb/format.c:               fp->formats = SNDRV_PCM_FMTBIT_MPEG;
sound/usb/format.c:               snd_printd(KERN_INFO "%d:%u:%d : unknown format tag %#x is detected.  processed as MPEG.\n",
sound/usb/format.c:               fp->formats = SNDRV_PCM_FMTBIT_MPEG;


> 
> Currently the pvrusb2 driver does not attempt to perform any processing 
> or filtering of the data stream, so radio data is just the same mpeg 
> stream as video (but without any real embedded video data).  If I have 
> to get into the business of processing the MPEG data in order to adhere 
> to this proposal, then that will be a very big deal for this driver.

I _suspect_ that it is just a matter of adding something like em28xx-audio
at pvrusb2, saying that the format is MPEG, instead of raw PCM. In-kernel
processing is likely not needed/wanted.

We may try to double check with Takashi during the KS media workshop.

Regards,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux