Re: [pulseaudio-discuss] [WIP] Passthrough support
On 25.03.2011 02:58, Dark Shadow wrote: On Thu, Mar 24, 2011 at 10:50 AM, Anssi Hannula anssi.hann...@iki.fi wrote: On 24.03.2011 16:18, pl bossart wrote: It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use normal 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Would anyone know where I could get a hold of some DTS-HD samples in 192Khz and 384kHz for testing? Compile ffmpeg and use it for the samples at http://samples.mplayerhq.hu/A-codecs/DTS/dts/ -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 25.03.2011 03:35, Dark Shadow wrote: Unless I am missing something all the movies I play say 48kHz on my receivers OSD when played through my PS3 so I thought that was the best they have, and higher was not used on average Blu-Ray's. If they have better why is it not being used considering my receiver supports it. I know from this dmesg output The sample rates outputted in dmesg and in /proc by ALSA are incorrect due to a kernel bug. 48000 88200 176400 192000 384000 in your log means 44100 48000 88200 96000 176400 (+192000) Basically there is a bitfield of static unsigned int rates[] = { 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000 }; which gets interpreted as: static unsigned int rates[] = { 8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 384000 }; so the wrong values are printed and possible 192000 is not printed at all. [ 182.696452] HDMI: detected monitor TX-SR608 [ 182.696456] at connection type HDMI [ 182.696462] HDMI: available speakers: FL/FR LFE FC RL/RR RLC/RRC [ 182.696472] HDMI: supports coding type LPCM: channels = 2, rates = 44100 48000 88200 176400 192000 384000, bits = 16 20 24 [ 182.696481] HDMI: supports coding type LPCM: channels = 8, rates = 44100 48000 88200 176400 192000 384000, bits = 16 20 24 [ 182.696489] HDMI: supports coding type AC-3: channels = 8, rates = 44100 48000 88200, max bitrate = 64 [ 182.696495] HDMI: supports coding type DTS: channels = 8, rates = 48000 88200, max bitrate = 1536000 [ 182.696501] HDMI: supports coding type DSD (One Bit Audio): channels = 6, rates = 48000 [ 182.696507] HDMI: supports coding type E-AC-3/DD+ (Dolby Digital Plus): channels = 8, rates = 48000 88200 [ 182.696514] HDMI: supports coding type DTS-HD: channels = 8, rates = 48000 88200 176400 192000 384000 [ 182.696520] HDMI: supports coding type MLP (Dolby TrueHD): channels = 8, rates = 88200 192000 ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Arun, I've been trying to get higher bit rates to passthrough with no luck. Is setting the channel count supported with passthrough (yet)? It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. -Pierre The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Thu, Mar 24, 2011 at 10:50 AM, Anssi Hannula anssi.hann...@iki.fi wrote: On 24.03.2011 16:18, pl bossart wrote: It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use normal 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Would anyone know where I could get a hold of some DTS-HD samples in 192Khz and 384kHz for testing? ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/24/11 18:58, Dark Shadow wrote: On Thu, Mar 24, 2011 at 10:50 AM, Anssi Hannulaanssi.hann...@iki.fi wrote: On 24.03.2011 16:18, pl bossart wrote: It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use normal 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Would anyone know where I could get a hold of some DTS-HD samples in 192Khz and 384kHz for testing? You can extract the dts-hd tracks from your mkv's with mkvextract. You can make them with spdifer (part of AudioFilter). ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Thu, Mar 24, 2011 at 7:19 PM, Kelly Anderson ke...@silka.with-linux.com wrote: On 03/24/11 18:58, Dark Shadow wrote: On Thu, Mar 24, 2011 at 10:50 AM, Anssi Hannulaanssi.hann...@iki.fi wrote: On 24.03.2011 16:18, pl bossart wrote: It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use normal 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Would anyone know where I could get a hold of some DTS-HD samples in 192Khz and 384kHz for testing? You can extract the dts-hd tracks from your mkv's with mkvextract. You can make them with spdifer (part of AudioFilter). ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Unless I am missing something all the movies I play say 48kHz on my receivers OSD when played through my PS3 so I thought that was the best they have, and higher was not used on average Blu-Ray's. If they have better why is it not being used considering my receiver supports it. I know from this dmesg output [ 182.696452] HDMI: detected monitor TX-SR608 [ 182.696456] at connection type HDMI [ 182.696462] HDMI: available speakers: FL/FR LFE FC RL/RR RLC/RRC [ 182.696472] HDMI: supports coding type LPCM: channels = 2, rates = 44100 48000 88200 176400 192000 384000, bits = 16 20 24 [ 182.696481] HDMI: supports coding type LPCM: channels = 8, rates = 44100 48000 88200 176400 192000 384000, bits = 16 20 24 [ 182.696489] HDMI: supports coding type AC-3: channels = 8, rates = 44100 48000 88200, max bitrate = 64 [ 182.696495] HDMI: supports coding type DTS: channels = 8, rates = 48000 88200, max bitrate
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/24/11 19:35, Dark Shadow wrote: On Thu, Mar 24, 2011 at 7:19 PM, Kelly Anderson ke...@silka.with-linux.com wrote: On 03/24/11 18:58, Dark Shadow wrote: On Thu, Mar 24, 2011 at 10:50 AM, Anssi Hannulaanssi.hann...@iki.fi wrote: On 24.03.2011 16:18, pl bossart wrote: It seems that 384k sample rates aren't supported directly in alsa, I did some patching to no avail yet. In any case if the channel count can be specified with passthrough the following should work. paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( this works). paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( this fails). To passthrough dolby true-hd it looks like it'll be necessary for more than two channels to work. There was a thread on dts-hd in alsa-devel at some point. Anssi (cc:ed) contributed some patches for HDMI and provided the information below on ffmpeg configurations. You may want to try at the alsa level before trying with pulseaudio to make sure your setup is correct. I tend to believe you have to go for 8ch @ 192kHz to make this work based on my limited understanding of HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use normal 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the TrueHD and E-AC-3 support is already there in ffmpeg trunk. The ffmpeg commandline to use is: ffmpeg -i input.file -f spdif output.spdif For DTS-HD files, to get full passthrough (i.e. not only core), a -dtshd_rate parameter is needed, which sets the output IEC958 rate. ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which means all DTS-HD High Resolution Audio files and even many of the DTS-HD Master Audio (the latter are lossless VBR). To play the spdif files back, I use aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r $RATE file.spdif - replacing $CARDNAME with the card name - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for non-zero DEVICENUM you'll need a patch from alsa git: http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 ) - set $CHANCOUNT and $RATE as per below - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD files, and for DTS-HD when the rate was set to 768000) - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use HBR or not. The additional 0x04 (non-copyright) I use above is not mandatory, but is the alsa default so I kept it. -- Anssi Hannula ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Would anyone know where I could get a hold of some DTS-HD samples in 192Khz and 384kHz for testing? You can extract the dts-hd tracks from your mkv's with mkvextract. You can make them with spdifer (part of AudioFilter). ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss Unless I am missing something all the movies I play say 48kHz on my receivers OSD when played through my PS3 so I thought that was the best they have, and higher was not used on average Blu-Ray's. The original samples are taken at 48khz and then compressed into dts or dts-hd. AudioFilter is muxing the dts/dts-hd packets into zero padded packets that contain the dts/dts-hd stream. A typical dts-hd stream is going to have packets around the 8k size. If it is muxed at 192khz packets that exceed it's size limit will be clipped. In my experience I was seeing maybe 200 bytes dropped on some packets. Now if you mux it at 384khz you effectively double the size of the packets that can be sent to the receiver and you don't have to resort to clipping. In a nutshell the 192khz and 384khz rates are spdif muxed rates not the original sample rate. ___ pulseaudio-discuss mailing list
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Sat, 2011-03-19 at 18:04 -0600, Kelly Anderson wrote: On 03/16/11 10:48, Arun Raghavan wrote: On Wed, 2011-03-16 at 11:19 +0530, Arun Raghavan wrote: [...] It will work, but not with paplay, only with the extended API when you create a non-PCM stream. I will rationalise the check for passthrough sink inputs in a bit, but for now, could you change the checks (there I've pushed a more comprehensive fix, so you shouldn't need to change that line and using paplay should work for you. -- Arun Arun, Hey, I just got around to testing without the following patch. It doesn't work. I also didn't see any recent checkins in the passthrough tree that would seem to affect this. Is it possible the fix didn't get pushed? Yep. :| Pushed now. Cheers, Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/16/11 10:48, Arun Raghavan wrote: On Wed, 2011-03-16 at 11:19 +0530, Arun Raghavan wrote: [...] It will work, but not with paplay, only with the extended API when you create a non-PCM stream. I will rationalise the check for passthrough sink inputs in a bit, but for now, could you change the checks (there I've pushed a more comprehensive fix, so you shouldn't need to change that line and using paplay should work for you. -- Arun Arun, Hey, I just got around to testing without the following patch. It doesn't work. I also didn't see any recent checkins in the passthrough tree that would seem to affect this. Is it possible the fix didn't get pushed? --- ./src/modules/alsa/alsa-sink.c.orig 2011-03-16 01:17:02.061953124 -0600 +++ ./src/modules/alsa/alsa-sink.c 2011-03-16 01:19:07.492460278 -0600 @@ -1058,7 +1058,7 @@ static int sink_process_msg(pa_msgobject pa_sink_input *i = PA_SINK_INPUT(data); int r = 0; -if (PA_LIKELY(pa_format_info_is_pcm(i-format))) +if (PA_LIKELY(!(i-flags PA_SINK_INPUT_PASSTHROUGH)) ) break; u-old_rate = u-sink-sample_spec.rate; @@ -1084,7 +1084,7 @@ static int sink_process_msg(pa_msgobject pa_sink_input *i = PA_SINK_INPUT(data); int r = 0; -if (PA_LIKELY(pa_format_info_is_pcm(i-format))) +if (PA_LIKELY(!(i-flags PA_SINK_INPUT_PASSTHROUGH)) ) break; /* Passthrough format, see if we need to reset sink sample rate */ ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Tue, 2011-03-15 at 17:36 -0500, pl bossart wrote: I pushed your change along with a fix for the assert you saw to my tree as well. I tested the latest batch of patches with AC3/SPDIF this time. Works well in general, however I found some interesting points: - in Rhythmbox, the passthrough mode is only enabled if the first file of playlist is compressed. If you start with PCM/WAV, it always uses the PCM mode. Are you using the crossfading backend? If yes, that won't work since they create their own pipeline with a volume element in between to do the crossfades. With the non-crossfading backend, I see it setting up an MP3 stream when it can and PCM when it can't. - in Totem, the passthrough mode works when the visual effects are disabled. I see a nice DD on my receiver...However the playback stops if you play with the volume slider. I get a pop-up error window saying 'an error occurred: pa_stream_set_sink_input_volume(): invalid argument' Ah, I hadn't tried this out. We should be handling this more gracefully right now - will put this on my TODO list. On a related note, maybe we want to change the approach to volume control. Depending on the sink, there might be ways of using side/in-band channels to send volume control information to the decoder. It's going to be protocol-specific. So maybe we need to provide the client with an information coming from the sink on whether volume control is actually supported or not. Tanu's independently working on flags and notifications for signalling when a sink-input (and sink, I believe) volume control is readable/writeable. We're aiming to have this in 1.0 as well, so we should end up piggybacking on his work for passthrough streams/sinks as well. -- Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Wed, 2011-03-16 at 11:19 +0530, Arun Raghavan wrote: [...] It will work, but not with paplay, only with the extended API when you create a non-PCM stream. I will rationalise the check for passthrough sink inputs in a bit, but for now, could you change the checks (there I've pushed a more comprehensive fix, so you shouldn't need to change that line and using paplay should work for you. -- Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Tue, 2011-03-15 at 17:36 -0500, pl bossart wrote: I pushed your change along with a fix for the assert you saw to my tree as well. I tested the latest batch of patches with AC3/SPDIF this time. Works well in general, however I found some interesting points: - in Rhythmbox, the passthrough mode is only enabled if the first file of playlist is compressed. If you start with PCM/WAV, it always uses the PCM mode. - in Totem, the passthrough mode works when the visual effects are disabled. I see a nice DD on my receiver...However the playback stops if you play with the volume slider. I get a pop-up error window saying 'an error occurred: pa_stream_set_sink_input_volume(): invalid argument' On a related note, maybe we want to change the approach to volume control. Depending on the sink, there might be ways of using side/in-band channels to send volume control information to the decoder. It's going to be protocol-specific. So maybe we need to provide the client with an information coming from the sink on whether volume control is actually supported or not. Yes, that information will be provided in the sink and source introspection data. Somewhat related: I've been thinking that maybe the volume channels should be separate from the stream channels. For example, maybe it's possible that some future sink implementation can only provide a simple single-channel volume interface, while the actual audio stream has multiple channels. Are you aware of any real-world cases where this separation would be beneficial? -- Tanu ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Tue, 2011-03-15 at 01:36 +0530, Arun Raghavan wrote: On Mon, 2011-03-14 at 14:57 -0500, pl bossart wrote: Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. I get this sort of thing on, as far as I can tell, one channel as well. I figured the decoder on the CSR chip wasn't that great. Looks to me that the quality is slightly worse than with the initial patches, but it's of course a very subjective assessment since I need to reinstall pulse/gstreamer to check the differences instead of doing an A/B test. Can you check and make sure the payloader doesn't skip/change any bytes? If you dump what is actually sent to the headset and compare to the initial file, you shouldn't have any deltas. Yep, I did that before I pushed out the code (verified a few frames by hand, but I'll do something more extensive in the morning). I'm still seeing the setconf error, but now that it's at least clear it's connecting to the wrong seid, I'm hoping to get this fixed. Turns out this was very likely a bluez problem. I've sent in a patch [1] that at least gets things working for me. I also see the high-pitched pops and clicks (these very definitely weren't there with your payloader) - should get that pinned down before long. I pushed your change along with a fix for the assert you saw to my tree as well. Cheers, Arun [1] http://thread.gmane.org/gmane.linux.bluez.kernel/11715 ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Hi, On Tue, Mar 15, 2011 at 11:43 AM, Arun Raghavan arun.ragha...@collabora.co.uk wrote: On Tue, 2011-03-15 at 01:36 +0530, Arun Raghavan wrote: On Mon, 2011-03-14 at 14:57 -0500, pl bossart wrote: Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. I get this sort of thing on, as far as I can tell, one channel as well. I figured the decoder on the CSR chip wasn't that great. Looks to me that the quality is slightly worse than with the initial patches, but it's of course a very subjective assessment since I need to reinstall pulse/gstreamer to check the differences instead of doing an A/B test. Can you check and make sure the payloader doesn't skip/change any bytes? If you dump what is actually sent to the headset and compare to the initial file, you shouldn't have any deltas. Yep, I did that before I pushed out the code (verified a few frames by hand, but I'll do something more extensive in the morning). I'm still seeing the setconf error, but now that it's at least clear it's connecting to the wrong seid, I'm hoping to get this fixed. Turns out this was very likely a bluez problem. I've sent in a patch [1] that at least gets things working for me. I also see the high-pitched pops and clicks (these very definitely weren't there with your payloader) - should get that pinned down before long. I pushed your change along with a fix for the assert you saw to my tree as well. I would suggest to use the new API to implement audio passthrough for bluetooth devices, it is very likely the we will be disabling unix socket IPC in BlueZ. What I would do is, if audio passthrough is supported then PA register a mp3 endpoint and try to configure both sbc and mp3 simultaneously (only one active at time) when possible so we can quickly switch between codecs. Cheers, Arun [1] http://thread.gmane.org/gmane.linux.bluez.kernel/11715 ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss -- Luiz Augusto von Dentz Computer Engineer ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
I would suggest to use the new API to implement audio passthrough for bluetooth devices, it is very likely the we will be disabling unix socket IPC in BlueZ. What I would do is, if audio passthrough is supported then PA register a mp3 endpoint and try to configure both sbc and mp3 simultaneously (only one active at time) when possible so we can quickly switch between codecs. Luiz, what is the time frame for removal of this socket IPC? Will it still be supported in Meego 1.2, 1.3, etc.? I don't disagree this is the right thing to do, I am just wondering if we would run into some integration issues that would actually delay the availability of MP3 passthrough by moving too quickly. Or maybe we can have the two approaches supported and remove this initial version at a later time? Thanks, -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Hi, On Tue, Mar 15, 2011 at 5:40 PM, pl bossart bossart.nos...@gmail.com wrote: I would suggest to use the new API to implement audio passthrough for bluetooth devices, it is very likely the we will be disabling unix socket IPC in BlueZ. What I would do is, if audio passthrough is supported then PA register a mp3 endpoint and try to configure both sbc and mp3 simultaneously (only one active at time) when possible so we can quickly switch between codecs. Luiz, what is the time frame for removal of this socket IPC? Will it still be supported in Meego 1.2, 1.3, etc.? I don't disagree this is the right thing to do, I am just wondering if we would run into some integration issues that would actually delay the availability of MP3 passthrough by moving too quickly. Or maybe we can have the two approaches supported and remove this initial version at a later time? Currently the 2 API work side by side, in fact we should already be able to use on MeeGo 1.2, for MeeGo 1.3 we should probably be moving for BlueZ 5.x which afaik will remove the unix socket IPC completely (Marcel can tell you the exact plan), so IMO we should try to prioritize the Media API solution which btw is what currently use/qualify in harmattan. -- Luiz Augusto von Dentz Computer Engineer ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
I pushed your change along with a fix for the assert you saw to my tree as well. I tested the latest batch of patches with AC3/SPDIF this time. Works well in general, however I found some interesting points: - in Rhythmbox, the passthrough mode is only enabled if the first file of playlist is compressed. If you start with PCM/WAV, it always uses the PCM mode. - in Totem, the passthrough mode works when the visual effects are disabled. I see a nice DD on my receiver...However the playback stops if you play with the volume slider. I get a pop-up error window saying 'an error occurred: pa_stream_set_sink_input_volume(): invalid argument' On a related note, maybe we want to change the approach to volume control. Depending on the sink, there might be ways of using side/in-band channels to send volume control information to the decoder. It's going to be protocol-specific. So maybe we need to provide the client with an information coming from the sink on whether volume control is actually supported or not. -Piere ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/09/11 03:10, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough Hello, I'm wanting to clone the passthrough head but I haven't been able to figure out which git option I need. So far All I've been able to get is master. git ls-remote git://git.collabora.co.uk/git/user/arun/pulseaudio.git dda564f50b55340ff4bfbaa8d6d6fc6427f764f4HEAD dda564f50b55340ff4bfbaa8d6d6fc6427f764f4refs/heads/master b42400816031c17cdf6a63f446510e13d0ab9828 refs/heads/module-echo-cancel aa78853d728172f7fa564b2782f6e84661bfcd15refs/heads/no-ramping 4cd90d9e32ca9a23e3c0f7615974ea0c55ff3e49refs/heads/orc a5b33c7122ee80dc6906fd51f7aa39322322f24brefs/heads/passthrough a4e9e9b631841eac5646b925c198d236c92d8aabrefs/heads/passthrough-bt 3a6dc95735e79f791788cda73a0fc36e46cb43earefs/heads/sq-aec ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Tue, 2011-03-15 at 18:50 -0600, Kelly Anderson wrote: On 03/09/11 03:10, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough Hello, I'm wanting to clone the passthrough head but I haven't been able to figure out which git option I need. So far All I've been able to get is master. git ls-remote git://git.collabora.co.uk/git/user/arun/pulseaudio.git After the clone, you need to do a: git checkout -b passthrough origin/passthrough This will create ans switch to a branch called passthrough which will track the remote branch passthrough from the tree you cloned (origin). You can switch to other branches after this with: git checkout branch Cheers, Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/15/11 22:04, Arun Raghavan wrote: On Tue, 2011-03-15 at 18:50 -0600, Kelly Anderson wrote: On 03/09/11 03:10, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough Hey Arun, I've built and installed the passthrough branch. Isn't changing sample rates supported yet? So far I can only passthrough sample rates that match the default-sample-rate in daemon.conf. Changeable rates is critical to being able to support for example dts-hd at 192khz, when standard dts will be 48khz. I'm using paplay for basic functionality checks. ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On 03/15/11 23:13, Kelly Anderson wrote: On 03/15/11 22:04, Arun Raghavan wrote: On Tue, 2011-03-15 at 18:50 -0600, Kelly Anderson wrote: On 03/09/11 03:10, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough Hey Arun, I've built and installed the passthrough branch. Isn't changing sample rates supported yet? So far I can only passthrough sample rates that match the default-sample-rate in daemon.conf. Changeable rates is critical to being able to support for example dts-hd at 192khz, when standard dts will be 48khz. I'm using paplay for basic functionality checks. I forgot to mention that I patched alsa-sink.c with extended rates as per: --- ./src/modules/alsa/alsa-sink.c.orig2011-03-15 22:15:20.701558916 -0600 +++ ./src/modules/alsa/alsa-sink.c2011-03-15 22:37:57.437394161 -0600 @@ -1436,6 +1436,7 @@ static pa_idxset* sink_get_formats(pa_si { pa_idxset *ret = pa_idxset_new(NULL, NULL); pa_format_info *f; +const char *dev_nam = ((struct userdata*)s-userdata)-device_name; pa_assert(s); @@ -1444,12 +1445,12 @@ static pa_idxset* sink_get_formats(pa_si pa_idxset_put(ret, f, NULL); /* FIXME: is there no better way to check for this? */ -if (strncmp(iec958, ((struct userdata*)s-userdata)-device_name, 6) == 0) { +if ( ! strncmp(iec958, dev_nam, 6) || ! strncmp(hdmi, dev_nam, 4) ) { /* FIXME: Eventually, we want the list of supported formats to be set * as properties by the GUI based on what the user says is supported by * the receiver */ /* FIXME: How do we figure out supported rates? :( */ -unsigned int i, rates[] = { 32000, 44100, 48000 }; +unsigned int i, rates[] = { 32000, 44100, 48000, 96000, 192000, 384000 }; /* FIXME: Make only one format_info once we've resolved how to do * lists/ranges in proplists */ ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Tue, 2011-03-15 at 23:13 -0600, Kelly Anderson wrote: On 03/15/11 22:04, Arun Raghavan wrote: On Tue, 2011-03-15 at 18:50 -0600, Kelly Anderson wrote: On 03/09/11 03:10, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough Hey Arun, I've built and installed the passthrough branch. Great! Thanks for testing this out. :) Isn't changing sample rates supported yet? So far I can only passthrough sample rates that match the default-sample-rate in daemon.conf. Changeable rates is critical to being able to support for example dts-hd at 192khz, when standard dts will be 48khz. I'm using paplay for basic functionality checks. It will work, but not with paplay, only with the extended API when you create a non-PCM stream. I will rationalise the check for passthrough sink inputs in a bit, but for now, could you change the checks (there are 2) in alsa-sink sink_process_msg() from: if (PA_LIKELY(pa_format_info_is_pcm(i-format))) to: if (PA_LIKELY(!(i-flags PA_SINK_INPUT_PASSTHROUGH))) This should make the sample-rate reconfiguration work for paplay as well. I'll apply your HDMI-related patch and push it to my tree (we should really be probing - I'll look into this once the other bits are done). Cheers, Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
I've pushed updates to passthrough-bt branches on my trees for pulseaudio (some core changes, rebased to current master), gst-plugins-base (MPEG audio payloader), and gst-plugins-good (pulsesink MPEG support). With all this, you should be able to test on your BT headset. I've got all these hanges, but still no luck. [ume@plb GST]$ gst-launch filesrc location=~/AURAL/Audio/theTest-320.mp3 ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: The stream is in the wrong format. Additional debug info: gstbaseaudiosink.c(914): gst_base_audio_sink_preroll (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0: sink not negotiated. ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... [ume@plb GST]$ gst-launch filesrc location=~/AURAL/Audio/theTest-320.mp3 ! mp3parse ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D 0:00:00.022098216 30380 0x8add070 ERROR GST_PIPELINE ./grammar.y:614:gst_parse_perform_link: could not link mpegaudioparse0 to pulsesink0 WARNING: erroneous pipeline: could not link mpegaudioparse0 to pulsesink0 what I am missing in the setup ? PCM playback seems to work fine. -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Mon, 2011-03-14 at 11:06 -0500, pl bossart wrote: I've pushed updates to passthrough-bt branches on my trees for pulseaudio (some core changes, rebased to current master), gst-plugins-base (MPEG audio payloader), and gst-plugins-good (pulsesink MPEG support). With all this, you should be able to test on your BT headset. I've got all these hanges, but still no luck. [ume@plb GST]$ gst-launch filesrc location=~/AURAL/Audio/theTest-320.mp3 ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: The stream is in the wrong format. Additional debug info: gstbaseaudiosink.c(914): gst_base_audio_sink_preroll (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0: sink not negotiated. ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... [ume@plb GST]$ gst-launch filesrc location=~/AURAL/Audio/theTest-320.mp3 ! mp3parse ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D 0:00:00.022098216 30380 0x8add070 ERROR GST_PIPELINE ../grammar.y:614:gst_parse_perform_link: could not link mpegaudioparse0 to pulsesink0 WARNING: erroneous pipeline: could not link mpegaudioparse0 to pulsesink0 what I am missing in the setup ? PCM playback seems to work fine. There was one bit from pulsesink in gst-plugins-good that I'd missed pushing till a couple of hours ago which actually enables MP3 support on the pulsesink side. I'm guessing that is missing in your tree? If not, running gst-launch with --gst-debug=baseaudiosink:5,pulse*:5 should produce some more verbose logs that I can look at. Cheers, Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
There was one bit from pulsesink in gst-plugins-good that I'd missed pushing till a couple of hours ago which actually enables MP3 support on the pulsesink side. I'm guessing that is missing in your tree? Nah, I traced the problem to the configure step in gst-plugins-good. Somehow my version of pulseaudio isn't detected. Not sure what info the script relies on, it thinks I am based on 0.9.19 when I am using git master. I forced support for pulse1.0 it by hand in config.h and found the same problem with the headset. Trying to figure out the differences with my initial patches. there must be a step missing. ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
I forced support for pulse1.0 it by hand in config.h and found the same problem with the headset. Trying to figure out the differences with my initial patches. there must be a step missing. ok, found a solution, see diff attached. For some reason the setup_ad2p() did both the SBC and MPEG configuration. Adding a test for the mode solves the issue, probably there was a buffer overflow or something bad. playing with SBC and MPEG works fine now, meaning that the negotiation works well depending on the payload. but when I try to go back to PCM/SBC the second time I get the following assert in pulseaudio (see gst log below) E: module-bluetooth-device.c: Assertion 'u-write_memchunk.length == u-block_size' failed at modules/bluetooth/module-bluetooth-device.c:1519, function a2dp_process_render(). Aborting. I'll let you debug this one, should be easier :-) Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. -Pierre [gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc location=~/AURAL/Audio/theTest-320.mp3 ! flump3dec ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock Got EOS from element pipeline0. Execution ended after 9540609373 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ... [gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc location=~/AURAL/Audio/theTest-320.mp3 ! mp3parse ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock Got EOS from element pipeline0. Execution ended after 9551288915 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ... [gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc location=~/AURAL/Audio/theTest-320.mp3 ! flump3dec ! pulsesink device=bluez_sink.00_0B_E4_94_31_9D Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: Failed to connect stream: Connection terminated Additional debug info: pulsesink.c(1005): gst_pulseringbuffer_acquire (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... diff-arun.patch Description: Binary data ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Mon, 2011-03-14 at 13:43 -0500, pl bossart wrote: I forced support for pulse1.0 it by hand in config.h and found the same problem with the headset. Trying to figure out the differences with my initial patches. there must be a step missing. ok, found a solution, see diff attached. For some reason the setup_ad2p() did both the SBC and MPEG configuration. Adding a test for the mode solves the issue, probably there was a buffer overflow or something bad. Thanks! I was getting around to this view as well - the set_configuration seems to be failing because we're trying to set MPEG caps on the SBC seid. playing with SBC and MPEG works fine now, meaning that the negotiation works well depending on the payload. but when I try to go back to PCM/SBC the second time I get the following assert in pulseaudio (see gst log below) E: module-bluetooth-device.c: Assertion 'u-write_memchunk.length == u-block_size' failed at modules/bluetooth/module-bluetooth-device.c:1519, function a2dp_process_render(). Aborting. I'll let you debug this one, should be easier :-) :) ack. Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. I get this sort of thing on, as far as I can tell, one channel as well. I figured the decoder on the CSR chip wasn't that great. Cheers, Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. I get this sort of thing on, as far as I can tell, one channel as well. I figured the decoder on the CSR chip wasn't that great. Looks to me that the quality is slightly worse than with the initial patches, but it's of course a very subjective assessment since I need to reinstall pulse/gstreamer to check the differences instead of doing an A/B test. Can you check and make sure the payloader doesn't skip/change any bytes? If you dump what is actually sent to the headset and compare to the initial file, you shouldn't have any deltas. Thanks -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Mon, 2011-03-14 at 14:57 -0500, pl bossart wrote: Other things I noticed: the volume is much higher in passthrough mode, maybe we need to find a way to set the volume on the headset to match the volume used for PCM. Also I heard some high-frequency modulations, typically coding noise, maybe there's still something fishy during the mp3 decode part. I get this sort of thing on, as far as I can tell, one channel as well. I figured the decoder on the CSR chip wasn't that great. Looks to me that the quality is slightly worse than with the initial patches, but it's of course a very subjective assessment since I need to reinstall pulse/gstreamer to check the differences instead of doing an A/B test. Can you check and make sure the payloader doesn't skip/change any bytes? If you dump what is actually sent to the headset and compare to the initial file, you shouldn't have any deltas. Yep, I did that before I pushed out the code (verified a few frames by hand, but I'll do something more extensive in the morning). I'm still seeing the setconf error, but now that it's at least clear it's connecting to the wrong seid, I'm hoping to get this fixed. -- Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Sat, 2011-03-12 at 16:01 -0600, pl bossart wrote: Looked at the BT modifications, doesn't look too bad. I would try first with MP3 support only, so that you don't have reconfiguration issues. If you support MP3 only from the beginning, it should be easier to make progress. Yep, I did that locally. No luck, unfortunately. If you can work on integrating the payloader in gstaudioiec61937 I will be able to help you then. That would be great - I should have the payloader done and pushed tomorrow. -- Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Hi Arun, I looked at the passthrough branch. Looks pretty good. I wrote down some notes: gstaudioiec61937: - need to check that frame is valid and synchronized on AC3 header before pushing iec payload - no code for mp3 and dts? pulsesink: - do we really need two steps for payload and commit? Make things complicated and creates memory copies - commit needs to prevent toy resampler (maybe this means the sink cannot work iwth a live source since no adjustment is possible. - spec.latency_time = GST_BASE_AUDIO_SINK (psink)-latency_time; if (!gst_ring_buffer_parse_caps (spec, caps)) goto out; Does this work? spec is not initialized? - change of routing? - formats /* FIXME: Eventually, we want the list of supported formats to be set + * as properties by the GUI based on what the user says is supported by + * the receiver */ +/* FIXME: How do we figure out supported rates? :( */ +unsigned int i, rates[] = { 32000, 44100, 48000 }; For HDMI and SPDIF, 32,44.1 and 48 are mandatory. I think you can query the alsa layer to give a range of supported frequencies since this is known in the driver (either hard-coded or obtained with EDID/eld). I remember seeing some ALSA patches on this for the NVIDIA cards. sink.c - how do we notify client that volume is disabled? I wasn't too clear on the BT support. You mentioned that it was a different branch and that it stilll nneds my patches to gst-ugly. We'd need to have the payloader code in gsraudioiec61937 instead? I am also not sure how we handle the transition from A2DP w/ SBC to A2DP w/ MP3. In the current code for iec958, there's no need to reconfigure the link. Last, I had 3 conflicts with git master that I had to solve by hand. Thanks -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
Looked at the BT modifications, doesn't look too bad. I would try first with MP3 support only, so that you don't have reconfiguration issues. If you support MP3 only from the beginning, it should be easier to make progress. If you can work on integrating the payloader in gstaudioiec61937 I will be able to help you then. Thanks, -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Sat, 2011-03-12 at 15:08 -0600, pl bossart wrote: Hi Arun, I looked at the passthrough branch. Looks pretty good. I wrote down some notes: gstaudioiec61937: - need to check that frame is valid and synchronized on AC3 header before pushing iec payload I'm expecting valid data from the parser - don't think it makes sense to duplicate the code from the parser. Now that you mention it though, I'm only using framed=true for the incoming caps, and this might not actually force the parser to be plugged. Will look into this. - no code for mp3 and dts? DTS is present now. MP3 should be there tomorrow. pulsesink: - do we really need two steps for payload and commit? Make things complicated and creates memory copies As the comment there says, we can avoid the duplicate copy by doing the alloc in the payloader. The base class for pulsesink works at sample granularity (and not byte granularity), so it became necessary to do the payloading near the beginning of the base class render function. - commit needs to prevent toy resampler (maybe this means the sink cannot work iwth a live source since no adjustment is possible. Must've dropped your check somehow. Will put it back. - spec.latency_time = GST_BASE_AUDIO_SINK (psink)-latency_time; if (!gst_ring_buffer_parse_caps (spec, caps)) goto out; Does this work? spec is not initialized? Yes, _parse_caps() fills the spec. - change of routing? Working on this. - formats /* FIXME: Eventually, we want the list of supported formats to be set + * as properties by the GUI based on what the user says is supported by + * the receiver */ +/* FIXME: How do we figure out supported rates? :( */ +unsigned int i, rates[] = { 32000, 44100, 48000 }; For HDMI and SPDIF, 32,44.1 and 48 are mandatory. I think you can query the alsa layer to give a range of supported frequencies since this is known in the driver (either hard-coded or obtained with EDID/eld). I remember seeing some ALSA patches on this for the NVIDIA cards. Great, I'll look this up. sink.c - how do we notify client that volume is disabled? Tanu's started some work to make this possible. Will coordinate with him and reuse the work already being done there. I wasn't too clear on the BT support. You mentioned that it was a different branch and that it stilll nneds my patches to gst-ugly. We'd need to have the payloader code in gsraudioiec61937 instead? I am also not sure how we handle the transition from A2DP w/ SBC to A2DP w/ MP3. In the current code for iec958, there's no need to reconfigure the link. Last, I had 3 conflicts with git master that I had to solve by hand. That's odd. I'll do a rebase and push tomorrow. Thanks for the review! Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] [WIP] Passthrough support
Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough What's here? All the basic plumbing for clients to signal a compresed format, have PA pick the best supported one, actually play that format, and have pactl list show these. The ALSA sink takes AC3 at the moment, and I should be pushing DTS support today/tomorrow after some more testing. It was a lot simpler for me to test this with pulsesink, so I've made the required changes there (I realise this is a bother for those who don't have local builds of gstreamer handy - sorry!). Eventually, I'd like to have a paplay-type interface for compressed formats (pre-payloaded). What's left? * Triggering renegotiation - I should be getting to this soon * Better proplists - We have one proplist per format+rate pair, which is fine for now, but eventually, we need to freeze the string format for lists/ranges * Proper UI for selecting accepted formats - I'm thinking that we need to add bits to the various UIs to provide a checklist of formats that the user's receiver accepts, set that as a property on the sink, and have a module save this (m-d-m, perhaps, or just a new module) * HDMI - in theory this should be easy to support, but I've not tested this yet * Bluetooth - See postscript * Sink-input passthrough flag to go away - I'll do this after paplay properly supports compressed formats * Disabling monitors - I suspend them for now, which seems to work okay, but we probably want to have way to disable these properly * Disabling volume - I'm planning on piggybacking on Tanu's work here :) So that's that. Comments and feedback appreciated. :) Cheers, Arun p.s.: BT support is being a major pita, mostly because my headset refuses to cooperate. There's a passthrough-bt branch in my PA tree which adapts the a2dp sink to the new API, and Pierre's patch for an IEC61937 payloader that never made it to the mailing list is at http://people.collabora.co.uk/~arun/plbossart-gst-plugins-ugly.patch (just needs a small change to pulseutil.c to set make the appropriate gst-pa type translation). ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
On Wed, 2011-03-09 at 15:40 +0530, Arun Raghavan wrote: Hello all, Based on the RFC I posted earlier, I've implemented basic passthrough support in some usable shape. It's up on the passthrough branch of each of: PulseAudio: http://git.collabora.co.uk/?p=user/arun/pulseaudio.git;a=shortlog;h=refs/heads/passthrough gst-plugins-base: http://git.collabora.co.uk/?p=user/arun/gst-plugins-base.git;a=shortlog;h=refs/heads/passthrough gst-plugins-good: http://git.collabora.co.uk/?p=user/arun/gst-plugins-good.git;a=shortlog;h=refs/heads/passthrough What's here? All the basic plumbing for clients to signal a compresed format, have PA pick the best supported one, actually play that format, and have pactl list show these. The ALSA sink takes AC3 at the moment, and I should be pushing DTS support today/tomorrow after some more testing. FWIW, this has now been pushed too. Needed some changes to the DTS parser in GStreamer, which can be found at: http://git.collabora.co.uk/?p=user/arun/gst-plugins-bad.git;a=shortlog;h=refs/heads/passthrough -- Arun ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [WIP] Passthrough support
What's here? All the basic plumbing for clients to signal a compresed format, have PA pick the best supported one, actually play that format, and have pactl list show these. The ALSA sink takes AC3 at the moment, and I should be pushing DTS support today/tomorrow after some more testing. I'll give it a try later this week. Thanks! -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss