Re: [PATCHv2 for v3.16] hdpvr: fix two audio bugs

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

 



On 06/16/2014 05:08 AM, Hans Verkuil wrote:
> Scott,
>
> Here is the correct version :-) Can you verify that it works for you?
>
> Regards,
>
> 	Hans
>
> When the audio encoding is changed the driver calls hdpvr_set_audio
> with the current opt->audio_input value. However, that should have
> been opt->audio_input + 1. So changing the audio encoding inadvertently
> changes the input as well. This bug has always been there.
>
> The second bug was introduced in kernel 3.10 and that broke the
> default_audio_input module option handling: the audio encoding was
> never switched to AC3 if default_audio_input was set to 2 (SPDIF input).
>
> In addition, since starting with 3.10 the audio encoding is always set
> at the start the first bug now always happens when the driver is loaded.
> In the past this bug would only surface if the user would change the
> audio encoding after the driver was loaded.
>
> Also fixes a small trivial typo (bufffer -> buffer).
>
> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> Reported-by: Scott Doty <scott@xxxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx      # for v3.10 and up
> ---
>  drivers/media/usb/hdpvr/hdpvr-video.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
> index 0500c417..6bce01a 100644
> --- a/drivers/media/usb/hdpvr/hdpvr-video.c
> +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
> @@ -82,7 +82,7 @@ static void hdpvr_read_bulk_callback(struct urb *urb)
>  }
>  
>  /*=========================================================================*/
> -/* bufffer bits */
> +/* buffer bits */
>  
>  /* function expects dev->io_mutex to be hold by caller */
>  int hdpvr_cancel_queue(struct hdpvr_device *dev)
> @@ -926,7 +926,7 @@ static int hdpvr_s_ctrl(struct v4l2_ctrl *ctrl)
>  	case V4L2_CID_MPEG_AUDIO_ENCODING:
>  		if (dev->flags & HDPVR_FLAG_AC3_CAP) {
>  			opt->audio_codec = ctrl->val;
> -			return hdpvr_set_audio(dev, opt->audio_input,
> +			return hdpvr_set_audio(dev, opt->audio_input + 1,
>  					      opt->audio_codec);
>  		}
>  		return 0;
> @@ -1198,7 +1198,7 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,
>  	v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
>  		V4L2_CID_MPEG_AUDIO_ENCODING,
>  		ac3 ? V4L2_MPEG_AUDIO_ENCODING_AC3 : V4L2_MPEG_AUDIO_ENCODING_AAC,
> -		0x7, V4L2_MPEG_AUDIO_ENCODING_AAC);
> +		0x7, ac3 ? dev->options.audio_codec : V4L2_MPEG_AUDIO_ENCODING_AAC);
>  	v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
>  		V4L2_CID_MPEG_VIDEO_ENCODING,
>  		V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3,


This did the trick!  Now my 5.1 audio is back -- and as a bonus, the
device now resets properly after a channel change.

Thank you very much!  Woo hoo! :)

 -Scott

--
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