LE10 & deinterlacing in RPi4

  • With LE10.0.2 on my Pi4 compared to LE10.0.0, I've noticed that the H264 encoded *.TS files from my TVHeadend server, recorded in 1080p @ 50ps with interlacing, now play with distinct 'judder' or 'jerkiness', especially when the image has a slowly panning background.

    The same file played on my Pi3 with OSMC (Kodi19.4), shows the video with interlacing, but at least the image pans smoothly and the irritating jerky visual effect on the background is not present. Kodi on both Pis has been set with identical display and video settings.


    I think the de-interlacing using hardware decoding on the Pi4 still has some a way to go yet. In the meanwhile, I've disable de-interlacing by default for all videos, as I prefer the result.

    Hi, on my 2 setups with rpi4 on LE 10.0.2 playback of interlaced content is just fine (except the issue i posted on RE: LE 10.0.2 RPI4 recorded tv seeking issues).


    2 things i can think of that you can check :


    1.Play the same file on other device , maybe the problem is in the specific file (some broadcasts do broadcast "judder" on their content).

    2.Make sure your video refresh rate is indeed 50hz while playing back the file , I had an issue with refresh rate change on playback when i had a delay of 1 sec setup on kodi settings.

  • sunny


    Could you provide a sample of a problematic recording? My stuttering issue could be resolved by the devs with a sample.

    I've done more testing, and the problem is not the recordings, it's the de-interlacing. I setup my other Pi4 with LE10.0.1 and the visual effect isn't there, but of course I get the slightly 'grainer' interlaced image.


    When I play the same file on my laptop via VLC with de-interlacing enabled, the background panning is perfectly smooth, but my laptop has a fast i7 processor and dedicated NVidia GPU!


    Yep, checked all that. I also tried changing the Pi4 video display down to the original broadcast rate of 25fps, still the same.


    When I play some recorded TV files that are 720i @25fps, the Pi4 can de-interlace them just fine. The PRIME based de-interlacing codec + the Pi4's hardware just isn't fast enough to cope.


    The visual effect of the background juddering as it pans across the screen is very, very mild, but for me it is just visible enough to be distracting. Maybe others just aren't as visually attuned to such things as me and to them the result is good enough?

    Edited 2 times, last by sunny: Merged a post created by sunny into this post. ().

  • could you provide a sample?


    Primarily for the devs, but i am also curious if i see the stutter. I have no interlaced TV content.

    Edited once, last by ApexDE ().

  • De-interlacing not only "resolving" the jagged image visuals which happens when playing interlaced content without de-interlacing, it also increases the temporal resolution, resulting twice the fps (if the content was shot at 50fps , it should be really noticeable).


    You need to set your display to 50hz (not 25) in order to see the effect properly and have smooth playback.


    Also , if your display has some sort of motion interpolation feature , it should be turned off.

  • With LE10.0.2 on my Pi4 compared to LE10.0.0, I've noticed that the H264 encoded *.TS files from my TVHeadend server, recorded in 1080p @ 50ps with interlacing, now play with distinct 'judder' or 'jerkiness', especially when the image has a slowly panning background.

    The same file played on my Pi3 with OSMC (Kodi19.4), shows the video with interlacing, but at least the image pans smoothly and the irritating jerky visual effect on the background is not present. Kodi on both Pis has been set with identical display and video settings.


    I think the de-interlacing using hardware decoding on the Pi4 still has some a way to go yet. In the meanwhile, I've disable de-interlacing by default for all videos, as I prefer the result.


    Where are you based ? What is your TV backend ?


    In 50Hz countries broadcast satellite, terrestrial and cable HDTV is broadcast in one of these formats. IPTV may be different :


    720p50 aka 720/50p (i.e. 720 lines progressive at 50 full-resolution progressive frames each second)

    1080i25 aka 1080/50i (i.e. 1080 lines interlaced, with 50 half-resolution interlaced fields each second, making 25 interlaced frames) (*)

    1080p50 aka 1080/50p (i.e. 1080 lines progressive, with 50 full-resolution progressive frames each second)



    (*) The UK Freeview HD platform uses an unusual encoding system of dynamic switching between 1080p25 (aka 1080/25p) and 1080i25 (aka 1080/50i) switching the encoder between 25fps progressive - when it detects native 25Hz motion (i.e. film or drama & documentary shot with a 'film look') - and 25fps interlaced - when it detects 50Hz motion (i.e. sport, entertainment, news etc.)


    1080i25 requires deinterlacing to 1080p50 by the receiving device, and is usually broadcast in h.264/AVC in 50Hz territories (Australia went early with MPEG2 but is an outlier). h.265/HEVC isn't widely used for 1080i25 as h.265 doesn't have optimisations for interlaced content - unlike h.264.


    1080p50 is usually only broadcast in h.265/HEVC (as the h.264 platforms previously defined usually topped out at 1080i25/720p50 and newer platforms benefit from h.265/HEVC's improved efficiency)


    720p50 is broadcast in h.264 mostly, but some newer DVB-T2 platforms are using h.265/HEVC for 720p50.


    You mention 1080p @ 50fps is the format your recordings are in - that would only be the case if you were receiving progressive 1080p50 h.265/HEVC, or were deinterlacing to 1080p50 as part of your recording process? Either case would mean there was no real issue with deinterlacing on playback.


    It sounds as if you are actually receiving 1080i @ 25fps and need your Pi 4B to deinterlace to 1080p @ 50fps to ensure you get fluid 50Hz motion on sources with 50Hz motion.


    Having a sample clip would assist fault finding.


    De-interlacing not only "resolving" the jagged image visuals which happens when playing interlaced content without de-interlacing, it also increases the temporal resolution, resulting twice the fps (if the content was shot at 50fps , it should be really noticeable).

    You need to set your display to 50hz (not 25) in order to see the effect properly and have smooth playback.


    Also , if your display has some sort of motion interpolation feature , it should be turned off.


    Yes - and no - it depends on the source material.


    A lot of broadcast TV material isn't native interlaced, so has no motion over >25Hz. Most drama and documentary is now shot at 25fps progressive, and so has no >25Hz motion. In this case deinterlacing is about preserving the full vertical resolution.


    You are correct that when you are deinterlacing native interlaced content (or content shot at 50fps progressive and converted to interlace - which is now common for sport shot UHD at 2160p50), the deinterlacing process is also about retaining the 50Hz motion inherent in a 50 field-per-second interlaced signal.


    What this means is that you need to check for 50Hz motion on source material you know actually has it! Most (but not all) studio entertainment shows will have 50Hz interlaced motion, as will almost all sport. Recording these shows is a good way of testing for proper 50Hz deinterlacing. Also continues news channels with tickers are a good test - as the tickers usually run at 50Hz.

    Edited once, last by noggin: Merged a post created by noggin into this post. ().

  • sunny Are you in Australia? If so I thought that Aus might still be using MPEG2 rather than h.264 (sometimes referred to as 'MPEG4') for HD broadcasts - but looking at digital bitrate, Aus - like most of Europe - is now h.264 for HD.


    Might be useful to post a short .ts recording of one of the channels that is proving problematic so we can have a look? Doesn't need to be more than 20-30" via GoogleDrive/Dropbox etc.

  • Here are a couple of channels (Melbourne Australia) via Jellyfin / HDHomeRun Quatro


    Channel 2 - ABC TV

    Code
    /videos/d416a5a9-b0e4-4114-f4b1-5d1f0c74232c/live.m3u8
    
    {"Protocol":1,"Id":"native_bbba5a6de96521ff4b73e891b4afe6e8_19bc6d59fc4da242e1841cb157dbe97a","Path":"http://192.168.42.63:8096/LiveTv/LiveStreamFiles/8630d86ba17d49f289dd4abf962984de/stream.ts","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mpegts","Size":null,"Name":null,"IsRemote":false,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_bbba5a6de96521ff4b73e891b4afe6e8_19bc6d59fc4da242e1841cb157dbe97a","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"mpeg2video","CodecTag":null,"Language":null,"ColorRange":"tv","ColorSpace":"bt470bg","ColorTransfer":"bt470bg","ColorPrimaries":"bt470bg","Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"576i MPEG2VIDEO SDR","NalLengthSize":null,"IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":2000000,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":576,"Width":720,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"Main","Type":1,"AspectRatio":"16:9","Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":8,"IsAnamorphic":false},{"Codec":"mp2","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"MP2 - Stereo","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":256000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":2256000,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

    Channel 20 - ABCTV HD

    Code
    /videos/917e45a5-3062-6668-0814-0bf638be0f1c/live.m3u8
    
    {"Protocol":1,"Id":"native_99cdadf4d11aa557bb4b0a89e0e189a3_19bc6d59fc4da242e1841cb157dbe97a","Path":"http://192.168.42.63:8096/LiveTv/LiveStreamFiles/48695eb3e5604dfcb27ee88112cc6ad2/stream.ts","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mpegts","Size":null,"Name":null,"IsRemote":false,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_99cdadf4d11aa557bb4b0a89e0e189a3_19bc6d59fc4da242e1841cb157dbe97a","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":null,"ColorRange":"tv","ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080i H264 SDR","NalLengthSize":"0","IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":20000000,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"High","Type":1,"AspectRatio":"16:9","Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":40,"IsAnamorphic":false},{"Codec":"mp2","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"MP2 - Stereo","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":256000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":20256000,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}
  • Here are a couple of channels (Melbourne Australia) via Jellyfin / HDHomeRun Quatro


    Channel 2 - ABC TV

    Code
    /videos/d416a5a9-b0e4-4114-f4b1-5d1f0c74232c/live.m3u8
    
    {"Protocol":1,"Id":"native_bbba5a6de96521ff4b73e891b4afe6e8_19bc6d59fc4da242e1841cb157dbe97a","Path":"http://192.168.42.63:8096/LiveTv/LiveStreamFiles/8630d86ba17d49f289dd4abf962984de/stream.ts","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mpegts","Size":null,"Name":null,"IsRemote":false,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_bbba5a6de96521ff4b73e891b4afe6e8_19bc6d59fc4da242e1841cb157dbe97a","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"mpeg2video","CodecTag":null,"Language":null,"ColorRange":"tv","ColorSpace":"bt470bg","ColorTransfer":"bt470bg","ColorPrimaries":"bt470bg","Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"576i MPEG2VIDEO SDR","NalLengthSize":null,"IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":2000000,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":576,"Width":720,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"Main","Type":1,"AspectRatio":"16:9","Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":8,"IsAnamorphic":false},{"Codec":"mp2","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"MP2 - Stereo","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":256000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":2256000,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

    Channel 20 - ABCTV HD

    Code
    /videos/917e45a5-3062-6668-0814-0bf638be0f1c/live.m3u8
    
    {"Protocol":1,"Id":"native_99cdadf4d11aa557bb4b0a89e0e189a3_19bc6d59fc4da242e1841cb157dbe97a","Path":"http://192.168.42.63:8096/LiveTv/LiveStreamFiles/48695eb3e5604dfcb27ee88112cc6ad2/stream.ts","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mpegts","Size":null,"Name":null,"IsRemote":false,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_99cdadf4d11aa557bb4b0a89e0e189a3_19bc6d59fc4da242e1841cb157dbe97a","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":null,"ColorRange":"tv","ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080i H264 SDR","NalLengthSize":"0","IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":20000000,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"High","Type":1,"AspectRatio":"16:9","Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":40,"IsAnamorphic":false},{"Codec":"mp2","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"Comment":null,"TimeBase":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"MP2 - Stereo","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":256000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":20256000,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

    Are you able to share any short .ts recordings ? (Assuming sunny is in Aus)


    The metadata posted above shows that ABC SD is 576i25 MPEG2 and ABC HD is 1080i25 h.264.

  • Where are you based ? What is your TV backend ?


    It sounds as if you are actually receiving 1080i @ 25fps and need your Pi 4B to deinterlace to 1080p @ 50fps to ensure you get fluid 50Hz motion on sources with 50Hz motion.


    Having a sample clip would assist fault finding.

    Sorry about the confusion. I got my facts wrong about the source TV channel's framerate. Yes, it is 25fps. I was opening the files with VLC with auto de-interlacing turned on and it was re-encoding it to 50fps.


    The source is two AU channels called SBS One HD and SBS Viceland HD which transmit 1080i content at 25fps, encoding is H264 - MPEG-4 AVC. I am using a Raspberry Pi3 with a TV HAT board and the latest OSMC + TVHeadend Server to do the recording. I stream and playback the recorded TV to a Pi4 running LE10.0.2 + TVHeadend Client. The Pi4 video display is set 1080p @ 50hz. Any funky motion effects / filter on the TV are turned off.


    If I set the LE Pi4's system > video to 25hz, the playback with de-interlacing enabled is worse; it looks like slow motion and is very, very jerky, everywhere. If I set the LE Pi4's system > video to 50hz and enable Adjust display refresh rate in player > videos, it is just as awful and jerky. Disabling the de-interlacing is the only way to get smooth motion, albeit with the poorer image quality.


    If I copy the source *.TS file to my Win PC and put it through AVIDemux to change it to 50fps (and trim out all the advertising), the resulting *.MP4 file, when copied to and played locally on the Pi4, plays with no jerkiness visible.


    The jerky effect is most noticeable when the subject is held in the centre of the frame and the background is panning past. For example, in bike races when the peloton is being tracked by a camera in a helicopter or motorbike and the trees / building go rolling past, that's when it's very visible.


    I have a few good sample *.TS files where the effect is noticeable in specific sections, but the files are waaay too big. I will try and find some sporting content that might show it and record it so that it's raw file. I'll also do some testing of copying the raw *.TS files @ 25fps to the Pi4 and play them compared to the ones converted to *.MP4 @ 50fps

    Edited once, last by sunny ().

  • Please test with this build: https://www.horus.com/~hias/tm…0220328220759-4d9d4e2.tar, the issues sound a lot like the ones from this thread: Skipping/Stuttering on SD IPTV with 10.0.2


    so long, Hias

    WOW! That is an amazing improvement HiassofT! The jerkiness in the panning scenery is totally gone when I stream the source *.TS file from the Pi3 TVHeadend server to the TVHeadend client on the Pi4. With the Pi4's video set to 1080 @ 50hz with no auto display rate adjusting, all the movement is smooth with the de-interlacing being nice and crisp too.


    Excellent news that this will be going into LE10.0.03, and thanks for the help.