Opened 6 years ago

Closed 3 years ago

Last modified 3 years ago

#13292 closed Bug Report - General (Fixed)

LiveTV Channel Switching - DVB-T/T2 UK Freeview

Reported by: Mike Bibbings Owned by: Peter Bennett
Priority: minor Milestone: 31.0
Component: MythTV - DVB Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

I am seeing a number of issues in LiveTV when changing to certain channels on DVB-T/T2 UK Freeview. The symptoms vary from an ok channel change, to video with no audio, vidio with wrong audio (subtitle fails) to "cannot open decoder".

It seems that codec detection for LiveTV is having problems with certain channels, where mp3 codec is detected. It is particularly noticeable for Sky News channel.

The issues are also present on mythtv 29, so the recent bump to ffmpeg 4 in master does not seem to be the cause.

mythtv 0.28 works but also has the Ring Buffer detection issues, but channel change is ok.

Note Channel switching times are also long due to Ring Buffer detection not failing, it falls back to in-file.

Attached are a number of debug logs including ffmpeg, mythffmpeg and mediainfo data taken from a recording of Sky News channel.

Attachments (16)

mythfrontend.20180605105537.8267-skynews-ok-tuning-with-audio.log (149.6 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180605180723.4343-skynews-noaudio.log (349.1 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180605181230.4437-skynews-could-not-open-decoder.log (126.7 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180605181924.4793-recorded-skynews-playback.log (110.7 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180606054416.6887-mythtv-028-xubuntu1604.log (658.6 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180606061614.2257-mythtv29-debian-stretch.log (244.9 KB) - added by Mike Bibbings 6 years ago.
skynews-ts-data.txt (9.2 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180605175952.4153-yourtv.log (122.9 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180608062200.29257-ITVHD.log.zip (151.5 KB) - added by Mike Bibbings 6 years ago.
mythfrontend.20180615130657.23054-various-channel-switch-withdebug-patch.log (669.1 KB) - added by Mike Bibbings 6 years ago.
disable_avformatdecoder_return_FAIL_DEBUGONLY.patch (613 bytes) - added by Mike Bibbings 6 years ago.
disable_avformatdecoder_return_FAIL_DEBUGONLY_v30.patch (613 bytes) - added by Mike Bibbings 5 years ago.
disable_avformatdecoder_return_FAIL_DEBUGONLY_master_31.patch (617 bytes) - added by Mike Bibbings 5 years ago.
20190828_fixes30_LiveTVCodecChecks.patch (3.3 KB) - added by Mike Bibbings 5 years ago.
20190828_master_LiveTVCodecChecks.patch (3.3 KB) - added by Mike Bibbings 5 years ago.
mythfrontend.20190829121946.30123.log (135.6 KB) - added by Mike Bibbings 5 years ago.
mythfrontend log with mythbackend "Live TV Codec Checks" set to "No", so checks are bypassed.

Change History (33)

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

Attachment: skynews-ts-data.txt added

comment:1 Changed 6 years ago by Mike Bibbings

Channel your tv log shows difference with no mp3 codec detected, with Ring Buffer detection working and quick channel change.

Changed 6 years ago by Mike Bibbings

comment:2 Changed 6 years ago by Mike Bibbings

Correction to first post: "Ring Buffer detection not failing" should be "Ring Buffer detection failing"

comment:3 Changed 6 years ago by Mike Bibbings

transport dumps for skynews, single channel and full mux are available at https://www.dropbox.com/sh/0n0t3ebp4nwiy3g/AACeC4WijoHLzj6Mrq1pgdmDa?dl=0

comment:4 Changed 6 years ago by bib1963

Sorry, can't help you other than confirm the problem, although if you up the card signal & tuning timeouts, that does seem to help. I've set mine to 10,000ms

comment:5 in reply to:  4 Changed 6 years ago by Mike Bibbings

Replying to bib1963:

Sorry, can't help you other than confirm the problem, although if you up the card signal & tuning timeouts, that does seem to help. I've set mine to 10,000ms

Yes, increasing timeouts does help (I had already done this), but they only mask the problem.

comment:6 Changed 6 years ago by Mike Bibbings

Added another mythfrontend.20180608062200.29257-ITVHD.log, this shows issues with DVB-T2 HD channel.

Changed 6 years ago by Mike Bibbings

comment:7 Changed 6 years ago by Mike Bibbings

I have added 8 full ts dump files (all multiplexes from SandyHeath? Freeview Transmitter) to my dropbox https://www.dropbox.com/sh/0n0t3ebp4nwiy3g/AACeC4WijoHLzj6Mrq1pgdmDa?dl=0

The files are c<nn>-fullts.ts and are 30 second dumps using dvbv5-zap

Mike

comment:8 Changed 6 years ago by Mike Bibbings

Done some more investigations, the issue seems to be (mainly) with audio stream detection.

I applied a patch which disabled FAIL return in avformatdecoder.cpp (attached disable_avformatdecoder_return_FAIL_DEBUGONLY.patch)

The attached log mythfrontend.20180615130657.23054-various-channel-switch-withdebug-patch.log

shows a number of entries like:

2018-06-15 14:07:44.328931 D [23054/23054] CoreContext? avformatdecoder.cpp:205 (has_codec_parameters) - AFD: unspecified frame size

With the patch applied channel tuning is far faster, as audio seems to sort itself out, and detection now works in RingBuffer? (it no longer drops back to in-file).

Changed 6 years ago by Mike Bibbings

Changed 6 years ago by Mike Bibbings

comment:9 Changed 5 years ago by Peter Bennett

Owner: set to Peter Bennett
Status: newassigned

comment:10 Changed 5 years ago by Mike Bibbings

Due to numerous changes in mythtv 30 since the original patch it no longer works, updated version for current mythtv 30 is attached, also attached is patch for current mythtv master (pre31)

Mike

Changed 5 years ago by Mike Bibbings

Changed 5 years ago by Mike Bibbings

comment:11 Changed 5 years ago by Peter Bennett

By always returning 1 from the FAIL macro, the patch means that the function has_codec_parameters always returns true. In that case the has_codec_parameters function as well as the loop from where it is called, will have no effect and could be removed.

It looks like the loop is designed to pause for 50 ms if the data is not ready for live tv.

Is that loop really unnecessary? It seems that the worst it can do is cause a fraction of a second delay, while removing it could cause playback to fail if the data is not really there when needed.

Am I understanding this correctly? Do you have any insight on why this fixes the problem?

comment:12 Changed 5 years ago by Mike Bibbings

I never investigated the loop timings, I just noticed that certain codec parameters were not being found, so I tried disabling the error return and everything started working. There are two different detection mechanisms, the first in livetv ring buffer and then the in-file detection which seem to behave differently.

In skynews-ts-data.txt file ffmpeg and mythffmpeg both show "Could not find codec parameters for stream 2 (Audio: mp3 (mp3float), 0 channels, fltp): unspecified frame size" which fails in livetv ring buffer tests, but the in-file tests don't seem to care.

Mike

comment:13 Changed 5 years ago by Nigel Jewell

This workaround also resolves the same issue for me. I'm in the UK using PCTV 292e devices.

Has anyone been able to investigate the root cause?

comment:14 in reply to:  11 Changed 5 years ago by Mike Bibbings

Replying to Peter Bennett:

By always returning 1 from the FAIL macro, the patch means that the function has_codec_parameters always returns true. In that case the has_codec_parameters function as well as the loop from where it is called, will have no effect and could be removed.

It looks like the loop is designed to pause for 50 ms if the data is not ready for live tv.

Is that loop really unnecessary? It seems that the worst it can do is cause a fraction of a second delay, while removing it could cause playback to fail if the data is not really there when needed.

Am I understanding this correctly? Do you have any insight on why this fixes the problem?

Peter, Done some more testing by completely removing has_codec_parameters function and the loop. Live TV channel changes worked with no problems for DVB-T/T2 and DVB-S/S2, channel changes are faster (to be expected) and do not result in dropping back to in-file detection. FindStreamInfo?() is happy, it is just that the checks failure.

My only concern about totally removing the function and the loop is possible side effects on other transmission systems e.g atsc, which I don't have and cannot test.

I have created a patch (for fixes/30 and master) which makes the checks conditional on a new mythbackend setting.

No action is required for most users, as the default is to allow the checks to run. For those users with DVB-T/T2 tuners having the problem e.g. UK Freeview, mythtv-setup>General>Locale Settings has a new option "Live TV Codec Checks" which when set to "No" bypasses the checks.

Changed 5 years ago by Mike Bibbings

Changed 5 years ago by Mike Bibbings

Changed 5 years ago by Mike Bibbings

mythfrontend log with mythbackend "Live TV Codec Checks" set to "No", so checks are bypassed.

comment:15 Changed 4 years ago by Mike Bibbings

This problem has been fixed in mythtv 31 and on. Suggest ticket is closed, together with a note of not fixing for earlier versions of mythtv.

Mike

comment:16 Changed 3 years ago by Peter Bennett

Resolution: Fixed
Status: assignedclosed

comment:17 Changed 3 years ago by Stuart Auchterlonie

Milestone: needs_triage31.0
Note: See TracTickets for help on using tickets.