Code Monkey home page Code Monkey logo

mythtv's Introduction

build Coverity scan GitHub issues GitHub pull requests GitHub top language

Welcome to MythTV

mythtv's People

Contributors

beirdo avatar bennettpeter avatar cpinkham avatar daniel-kristjansson avatar dblain avatar dekarl avatar ex-nerd avatar garybuhrmaster avatar gigem avatar greyfoxx avatar jannau avatar jpoet avatar jyavenard avatar kmdewaal avatar knowledgejunkie avatar linuxdude42 avatar mark-kendall avatar michaelni avatar natanojl avatar nigelpearson avatar paul-h avatar peper03 avatar rcrdnalor avatar rkulagowski avatar sphery avatar stichnot avatar stuarta avatar stuartm avatar ulmus-scott avatar wagnerrp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mythtv's Issues

Android: Full '4K' support (i.e. without scaling)

A recap of the issue:-

  • Qt and/or Android virtualise the UI window when running higher than HD resolutions (1920x1080)
  • so when using a 4K screen/mode, the UI and its associated OpenGL context are always created with a 1920x1080 surface
  • during 4K video playback (for both software decode and MediaCodec accelerated) we still use 4K video textures but these are effectively downscaled to HD in our rendering before being scaled back up again when the Qt surface is finally rendered.
  • the end result is that we lose full 4K rendering - despite the screen running at 4K

Some previous discussion:-

https://lists.archive.carbon60.com/mythtv/dev/619004

Prospective associated code for display res switching: #219

Possibly relevant updates to Qt:

1 - qt/qtbase@b2d24dc
This should be in current Qt and I'm not sure if it has been tested at any point.

2 - qt/qtbase@a35a7fc
This looks like it might be the winner (as it calls Display.getRealMetrics) but is not in any Qt release yet (patch our Qt version in the Android packager?)

Possibly relevant MythTV code:

  • we set Qt::AA_DisableHighDpiScaling in MythDisplay::::ConfigureQtGUI
  • in latest master (and backported to fixes/31), we now properly support High DPI settings on macOS. So if the second Qt update above behaves in the same way as macOS then we should be good to go... (N.B. that means the window system still uses the virtualised size (HD) but sets the devicePixelRatio to 2.0)

Add custom QPA EGLFS_KMS plugin

The existing Qt plugin exposes very little (none) of its functionality to the client. There are 2 possible cases where we need more access:-

  1. Full display mode switching when using EGLFS_KMS (linux without X or Wayland) - currently we do not have access to the DRM fd and hence do not have the privileges to change modes
  2. Support for HDR metadata signalling to the display. On linux this is only currently supported at this low level - so we need a stack of kms/gbm code.

The biggest potential issue here is the extensive use of Qt private headers that will be needed.

An example custom plugin is available at https://github.com/lirios/eglfs (unfortunately cmake based).

DVD: Some DVD menus broken when using VAAPI and VDPAU

Migrated from trac: https://code.mythtv.org/trac/ticket/13641

  • issue confirmed with https://www.mir.com/truncated-groundhog.iso sample provided in the original ticket.
  • no issues seen with software decoding
  • definite problem with VAAPI
  • not confirmed yet (by me) with VDPAU (as reported in the original ticket) but per analysis below, I would expect it to be broken as well

A quick debug shows that we are resetting the video buffers virtually every frame because:-

  • the aspect ratio is overridden in the DVD decoder
  • both VDPAU and VAAPI decoders need to be reset if there is an aspect ratio change for MPEG2
  • we think the aspect ratio is constantly changing because we are comparing to the stream aspect - not the overridden aspect

So I couldn't reproduce this before because all of my disks are 16:9 aspect ratio (i.e. not overridden).

I think this is a fairly simple fix.

Add/test support for the FFmpeg CUDA yadif deinterlacing filter

This would be used instead of the NVDEC internal deinterlacing. The yadif filter offers the benefit of having full control over the deinterlacing process - currently we just request deinterlacing at the start of NVDEC decoding.

See use of FFmpeg VAAPI deinterlacing filter for likely approach.

tmdb3.py not automatically loads available cover/banner

  • Platform: unknown

  • MythTV version: v32 pre

  • Package version: unknown

  • Component: Manual Metadata lookup

Issue moved from https://code.mythtv.org/trac/ticket/13518

Original Report by user warpme:

Just testing current master revisited tmdb3.py and discover following:
script finds ok metadata for given movie but not automatically loads cover & banner.
However - when I go to "edit metadata" and ask script to manually find&load online cover & banner - it loads OK cover&banner.
Is this expected?
In other words: is it expected that user will need to manually load cover/banner even if script can do this automatically?

My example is: tmdb3.py with movie id=93856

Analysis so far reported in this issue:
Looking at the commit 2738b98 named "VideoDialog: fix loop when using the choose metadata popup" ( ​2738b98 ) it seems, that this behaviour is intended, but I still do not know the exact reason for that fix.

Answer by the committer of above reference (excerpt):
I don't remember the details but I can recall the problem was an
infinite loop where you close the dialog and it immediately reopened so
there was no way to escape out of it other than killing the frontend.

Improve Channel Icon Handling

Improvements to channel icon handling

  • Add picons data source MythTV/services#8
  • Improve the API to return results grouped. eg "exact match", "likely match", "fuzzy match". Support JSON & XML
  • Backend should handle all channel icon management and storage, frontends retrieve icons from backend.

Audio video sync (AVSync2?) on v31.0

  • Platform: NVIDIA Shield TV 2019 model (the tube)

  • MythTV version: v31.0fixes

  • Package version: mythfrontend-20200716-arm-v31.0-79-g89d1991ef2.apk

  • Component: mythfrontend player

What steps will reproduce the bug?

On my 2017 Shield TV I have installed: mythfrontend-20190724-arm64-v31-Pre-539...apk

On a new 2019 Shield TV (Tube): mythfrontend-20200716-arm-v31.0-79-g89d1991ef2.apk

The 20190724-arm64-v31-Pre-539 works fine.

The new 20200716-arm-v31.0-79 has problems as follows. When seeking:

The audio does not mute when seeking, as it does on 20190724-arm64-v31-Pre-539.
The audio sync gets messed up when seeking, and causes the video to play double speed and without audio.
I did notice the AVSync2 menu option is missing from the Settings->Playback menus on 20200716-arm-v31.0-79, and I do have it set on the 20190724-arm64-v31-Pre-539 version.

Onn the Shield Tube, the leanback-frontend plays and seeks without error.

How often does it reproduce? Is there a required condition?

Randomly when seeking forward and/or backward. Occasionally, it kills the frontend completely and returns to android.

What is the expected behaviour?

To have it work like id does in mythfrontend-20190724-arm64-v31-Pre-539...apk
It works flawlessly in that release. I would install Pre-539 on the 2019 Tube Shield, but the Tube is a 32-bit version of android and requires a 32 bit mythfrontend, which I could not find in a Pre-539 release.

Something that changed from mythfrontend-20190724-arm64-v31-Pre-539...apk to mythfrontend-20200716-arm-v31.0-79-g89d1991ef2.apk seems to be the cause.

So I hope a fix results in the following:

  1. mutes audio while seeking (without little audio blips between each seek)
  2. resumes playing smoothly and without muted speedup or crashing

What do you see instead?

Audio gets out of sync with video between pressing forward/backward keys and, often, when playback resumes, the audio is muted and the playback speed is 2X (or so) fast. I have to exit playback and resume playback to recover. Sometimes, mythfrontend dies.

Additional information

jpilk suggested:

Most of the a/v sync issues in the new v31 playback code seem to have been related to the choice of deinterlacer. Perhaps this affects the Shield too.

I have tried all combinations of deinterlacer available in the menus, but to no avail.

libmythui: Improve display resolution support

  1. Differentiate between switching display modes for video and for the UI. i.e. allow the user to specify a default UI resolution (and/or framerate) but not enable mode switching for video playback.
  2. Extend mode switching for video playback. The 'perfect' solution here would be to have a fully automatic mode - where the display mode would selected based on video size and framerate - with additional settings to avoid going below e.g. 1920x1080. The current auto mode requires one resolution - with the auto element being used for refresh rate.

libmythtv: Remove direct database access

Lots to do here but initial targets:-

  1. PreviewGenerator
  2. VideoDisplayProfile
  3. tv_play: a couple of random card/channel queries
  4. PlayGroup
  5. mheg/mhi

I'm assuming that many of the recorder types classes should legitimately be using the database directly.

Mythfrontend crashes when displaying programme guide and video exits

  • only applies when setting 'Continue playback when embedded' is enabled
  • does not apply to Programme Finder, Upcoming Recordings or Edit Recording Schedule UIs as these do not obey the setting (i.e. they pause playback)
  • does not apply to live TV as (in theory at least) playback should not stop
  • should be a relatively straightforward fix

VideoDisplayProfile is not respected following a video stream change

This is, afaik, the only real remaining potential issue from https://code.mythtv.org/trac/ticket/10602

If, for example, the current VideoDisplayProfile uses FFmpeg decoding for SD content and VAAPI for HD content, when the stream switches from SD to HD, FFmpeg is still used.

Note: this is purely an issue for in stream changes - it does not relate to switching channels etc - and as such is a pretty rare occurrence (I think).

Furthermore, I'm not sure how feasible it is to switch decoders mid-stream - some investigation is needed.

Finish HDR tonemapping

  1. OpenGL is half there (compute shader support, compute shader) - just need to fix the compute shader and generalise it for different transfer characteristics
  2. Vulkan will need an adaptation of the OpenGL compute shader, support for compute shaders... and of course some video playback code for Vulkan

Remove a lingering DataDirect grabber artifact in filldata.h

With commit 3260e98 the DataDirect grabber was removed from the code base.

The vector dd_dups (which was only used by the DataDirect grabber) was not removed from the Source struct at that time.

A pull request removing the dd_dups vector will be submitted shortly.

Suggested labels (for the triage agent to consider):  version:master component:mythtv:general patch:feature (or is it patch:bug?)

libmythtv: Refactor OSD classes

OSD currently handles both UI details (e.g. menus, info screens etc) as well as overlays for subtitles, captions, MHEG etc

This adds unnecessary complication:

  • we need to manage the state for all OSD screens as one. Regular UI interaction is of no relevance to captions and visa versa
  • UI elements sit in the main thread and should be entirely non-blocking/thread safe
  • captions have a degree of interaction with the decoder thread - which may require additional thread safety code
  • a captions/overlays OSD class can be moved into the video output classes as there is no higher level interaction and draw order can be handled explicitly

Note - it's not entirely clear to me ATM where MHEG/interactive screens sit in this model (probably UI)

libmythui: Create a MythUIMedia class

  • integrated into the main event loop
  • location, movement etc all entirely themeable and animation enabled
  • must be non-blocking
  • takes control of frame rate/buffer swapping
  • can handle all media types; video, audio and data only

Vulkan: Implement MythVideoTextureVulkan

Class is already stubbed out in master.

This should mimic the behaviour of MythVideoTexture (OpenGL version) - i.e. create Vulkan video textures and support uploading from CPU to GPU memory.

Note: The implementation will by necessity be different from OpenGL. Vulkan requires that memory transfers do not happen during a render pass - so they must be handled beforehand and appropriate synchronisation used to ensure they are ready for display.

libmythui: Use OpenGL/Vulkan for scaling

Currently, libmythui will scale all theme images for the current widget size.

This is suboptimal when using OpenGL or Vulkan and the display size is larger than the theme resolution:-

  • there is a delay at (first) startup as the images are scaled in software
  • uses additional disk space (which may be undesirable on some platforms) for the disk theme cache
  • uses more CPU and GPU memory to cache current theme images (4x as much for an HD theme displaying at 4K)
  • slows rendering of dynamic images (i.e. non themed elements such as fanart) that must be scaled before display
  • slows rendering (more texture sampling)

We should pass the raw theme images to the painters and let the GPU scale.

The existing behaviour should be retained when using the Qt painter (although Qt may handle this ok).

Wayland: Link to Wayland and include Qt private platform headers

Qt does not directly expose either the wl_compositor or wl_surface objects to clients. We need these if we are going to call Wayland api's for additional functionality.

Proposal:-

  • add a 'wayland-extras' option to configure (for the time being at least not enabled by default)
  • if enabled require Wayland and check for existence of Qt private headers (QPlatformNativeInterface)
  • update libmythui.pro to include Qt private headers

Refs #210 and #216

Hauppauge ImpactVCB-e and HVR5525 failure

OS: Fedora 32
Package: mythtv-31.0-3.20200527gitfc90482281.fc32.x86_64
Subsystem: Recording

Setting up the Hauppauge ImpactVCB-e to input composite analogue video streams seems to work fine. It finds the card, properly identifies it, properly determines that it can only do S-Video and Composite and allows the user to select Composite.

However, it fails to save any content when the line is set to record something.

What steps will reproduce the bug?

Install a Hauppauge ImpactVCB-e and use it.

How often does it reproduce? Is there a required condition?

Always fails

What is the expected behaviour?

That it will record programs

What do you see instead?

It not recording programs

Additional information

Doesn't work in LiveTV mode either.

The following is a short extract from the mythbackend log:

2020-09-04 13:45:38.522401 I [644823/644823] CoreContext recorders/v4lchannel.cpp:234 (InitializeInputs) - Global TVFormat
Setting 'PAL'
2020-09-04 13:45:38.522674 I [644823/644823] CoreContext recorders/v4lchannel.cpp:253 (InitializeInputs) - V4LChannel[31 (/dev/video0): Input #31: 'Composite1' schan(1106) tun() v4l2(PAL)
2020-09-04 13:45:38.522683 I [644823/644823] CoreContext recorders/v4lchannel.cpp:285 (SetFormat) - V4LChannel[31 (/dev/video0): SetFormat(Default) fmt(PAL) input(31)
2020-09-04 13:45:38.522693 I [644823/644823] CoreContext recorders/v4lchannel.cpp:517 (SetInputAndFormat) -
V4LChannel31: SetInputAndFormat(31, PAL) (v4l v2) input_switch: 0 mode_switch: 1
2020-09-04 13:45:38.546082 E [644823/644823] CoreContext recorders/v4lchannel.cpp:570 (SetInputAndFormat) -
V4LChannel31: SetInputAndFormat(31, PAL)
while reenabling streaming (v4l v2)
eno: Invalid argument (22)
2020-09-04 13:45:38.546087 E [644823/644823] CoreContext recorders/v4lchannel.cpp:289 (SetFormat) - V4LChannel31: Failed to set format.
eno: Invalid argument (22)
2020-09-04 13:45:38.546093 I [644823/644823] CoreContext recorders/v4lchannel.cpp:285 (SetFormat) - V4LChannel[31 (/dev/video0): SetFormat(PAL) fmt(PAL) input(31)
2020-09-04 13:45:38.546099 I [644823/644823] CoreContext recorders/v4lchannel.cpp:517 (SetInputAndFormat) - V4LChannel31: SetInputAndFormat(31, PAL) (v4l v2) input_switch: 0 mode_switch: 1
2020-09-04 13:45:38.546104 E [644823/644823] CoreContext recorders/v4lchannel.cpp:570 (SetInputAndFormat) - V4LChannel31: SetInputAndFormat(31, PAL)
while reenabling streaming (v4l v2)
eno: Invalid argument (22)
2020-09-04 13:45:38.546107 E [644823/644823] CoreContext recorders/v4lchannel.cpp:289 (SetFormat) - V4LChannel31: Failed to set format.
eno: Invalid argument (22)

The V4L2 tools say this about the card:

The v4l2-ctl tool under the user "mythtv" produces the following:
$ v4l2-ctl -D
Driver Info:
Driver name : cx23885
Card type : Hauppauge ImpactVCB-e
Bus info : PCIe:0000:06:00.0
Driver version : 5.7.16
Capabilities : 0x85220011
Video Capture
VBI Capture
Audio
Read/Write
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x05220001
Video Capture
Audio
Read/Write
Streaming
Extended Pix Format

Remove QtScript dependency

QtScript was deprecated in Qt5.5, is no longer developed and has been removed for Qt6.

QtScript is currently used to provide server side scripting for the web server (e.g. build tables of html from exported data). Note: I am undoubtedly missing other uses.

Instead of sending 'complete' html to clients, we should be providing boiler plate html with jQuery etc so that the web client can use the services API to build a useful, context sensitive interface (i.e. mythbackend could present recordings, status etc and the frontend some control elements as well as status etc).

A feature complete mythbackend implementation could provide a replacement for mythweb.

For clarity - this essentials means moving JavaScript from the server to the client.

Use values from database instead of calculating from filename

Hi,

I'm on debian with atm version 31.0+fixes20200906.gitb282809197-dmo0~bpo10+1

After trying to clean up everything undone in the past years, I saw that the series with the german Name "Es war einmal... das Leben" didn't show screenshots, just the cover. After checking ttvdb.py does download them, and verifying be renaming that the picture itself is OK, I searched deeper. On a last try I renamed the Folder of the series, it was named "Es war einmal das Leben", so in the folder name three dots where missing. At least in terra theme this wasn't visible, as the dots where removed from the scanned filename anyways. The right data was saved in the db after ttvdb run, so in my Eyes it's just wrong to calculate that from the directory and filenames instead of using the already saved data. Or the saving of the unused data is wrong.

Dots from series name are removed while scanning

Hi,

I'm on debian with atm version 31.0+fixes20200906.gitb282809197-dmo0~bpo10+1

After adding "Marvel's Agents of S.H.I.E.L.D." to my collection, metadata retrieval failed for every single episode. The series was shown in mythfrontend as "Marvel's Agents of S H I E L D" with all dots replaced by spaces, and that name was given to ttvdb.py, so it was lookup for a wrong series name. After editing the series name in the metadata screen back to the version with dots it just worked as expected. Doing this for all 123 episodes isn't an option, and I see no reason for this modification of the name.

Improve theme handling / packaging / delivery

There are several components that need to be addressed here

Core Goals:

  • New theme packaging scripting, driven by buildbot network
  • Provide themes for the branch, rather than the specific minor.patch release
  • Update client side to look for theme by branch name

Stretch Goals:

  • Provide a web interface to allow managing themes which are packaged

Vulkan: Implement MythVideoVulkan

Class is already stubbed out in master.

This will mimic the behaviour of MythOpenGLVideo; its sole role is to retrieve, upload, format and render video frames, irrespective of all other video pipeline state (i.e. buffering, timing etc)

libmythui: Revisit window/appearance settings

The current settings are confusing and do not necessarily work together. This is largely due to trying to handle fullscreen (see #232) and a windowed mode.

Proposal:-

  1. with #232 in place, clearly differentiate between settings that are for windowed mode and fullscreen. (e.g. window border)
  2. when running in a window, disallow some behaviours e.g. all display mode switching (which has numerous issues when running in a window and is probably not appropriate to a desktop window).

see also #233

Guide Service API combines channels incorrectly

The Guide/GetProgramGuide service api combines channels with the same callsign and only shows them once. To be consistent with mythfrontend it should only combine channels if they have the same callsign and channel number.

Android: Regression in video playback in master

As reported by @bennettpeter

Non-working version is b14bb16
Previous working version is c98d399

I can't see any obvious reason for the issue and the android logs give no clues.

There was a significant video playback refactor around e70fbf7

but there were also some significant clang-tidy cleanups from @linuxdude42 across the code starting around ccf15e7

@bennettpeter can you try and git bisect which commit breaks the build? I would suggest 4328cf9 as a starting point (pre my video playback refactor and post @linuxdude42 's changes)

Vulkan: Fix UI image/text filtering

Comparing like for like OpenGL and Vulkan rendering, it is clear that some images are not as sharp with Vulkan.

It is most obvious with text - other images appear to be OK.

Given that text and other images use the same rendering pathway, this implies an issue with rendering the text in software - which is illogical as this uses the same code as the OpenGL and Qt painters.

Service API does not honor the MasterBackendOverride setting

The service api for Content should honor the MasterBackendOverride setting. That setting specifies that playback should retrieve files from the master backend rather than the recording backend. However the following Content APIs issue a redirect to the slave backend when the recording was made on a slave:

GetPreviewImage
GetRecording
AddRecordingLiveStream

AddVideoLiveStream deleted because videos do not take account of master backend override

These should not redirect to the slave backend if the MasterBackendOverride flag is set.

Regression in V4L2 M2M Prime decoding

a1e378a updated the V4L2 M2M decoder for the latest patch set.

No issues noted with RPI4 but @warpme reports a regression in decoder performance on s905 based boards.

My only suspect is the use of V4L2_MEMORY_DMABUF instead of V4L2_MEMORY_MMAP

Move backend config from mythtv-setup to mythbackend internal web server

It's cumbersome to have to use mythtv-setup (an X application) on a headless backend server. We should be able to perform all required setup via the webserver in the backend

Original trac ticket https://code.mythtv.org/trac/ticket/8262

  • Backend needs to be able to startup with zero configuration setup
  • Backend port 6544 must respond even if --noupnp is used to disable upnp
  • Leverage bootstraping of DB https://code.mythtv.org/trac/ticket/12264 to get initial schema
  • Configure capture cards, with async discovery of network tuners
  • Configure datasources etc
  • Scanning API, with predefined profiles for typical Satellite / Country providers
  • Dynamic reconfiguration (ie. no restarting to add capture cards)
  • Modern Javascript framework based.

Android: Better support for touch screens

Apologies to @mspieth and @bennettpeter if I'm missing something obvious here.

When using the Android port on a phone (rather than Android TV), everything generally works as expected.

The big issue however is exiting from a UI screen and/or video playback. There just doesn't appear to be any simple way of going back/exiting. I'm not quite sure where gesture support fits in here - but that seems the only obvious way of handling this

Vulkan: Fix issues with UI state

There are sundry, probably related, issues with rendering the UI with Vulkan.

Hard to tell what the underlying cause is but symptoms include errors with alpha blending and/or draw order and apparent wrong state for buttons etc (i.e. the wrong button is dimmed).

Given the current implementation uses push buffers for each draw call, it is hard to see how this arises.

Wayland: MythTV fails to inhibit idle ie screensaver on sway

This is on sway, the popular wayland compositor.

kodi and mpv both emit an idle-inhibit signal when playing and stop the screensaver cutting in.

  • Platform:
    Linux nina 5.7.9-100.fc31.x86_64 #1 SMP Fri Jul 17 17:18:38 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

  • MythTV version:
    mythtv-frontend-31.0-9.20200829gitab0c38a476.fc31.x86_64

  • Package version:

  • Component:
    mythfrontend

What steps will reproduce the bug?

While running under sway, have a idle timer running like so:

swayidle -w timeout 10 swaymsg 'output * dpms off' resume swaymsg 'output * dpms on'

Then start a mythtv playback and wait for the screen to blank.

What is the expected behaviour?

mythtv should inhibit the idle timer - kodi and mpv do it correctly.

What do you see instead?

The screen blanks until the mouse is moved or a key is pressed

mythtranscode: full disk truncates recording

Also reported at https://code.mythtv.org/trac/ticket/12602 and fixed by pull request #164.

DATA LOSS BUG: Disk full during lossless transcode permanently loses the end of the recording.

  • Platform: Ubuntu 18.04 LTS: Linux mythtv 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

  • MythTV version: fixes/29 but also in master

  • Package version: mythtv/bionic,bionic,now 2:29.1+fixes.20180414.329c235-0ubuntu3 all [installed]

  • Component: mythtranscode

What steps will reproduce the bug?

Backup your test recording first! Or use a worthless recording.

Fill your disk so that free space exists but is less than the size of the large test recording you are about to transcode. Now queue a lossless transcode to permanently remove a cutlist. When disk gets completely full during the transcode, this error is not detected, and the rename of .tmp file is performed anyway, overwriting the original with the failed file. Of course this permanently loses the end of the recording. I see no evidence of the full disk or related error in mythtranscode.log, but it does clearly log the final rename.

How often does it reproduce? Is there a required condition?

Every time disk fills while transcode is in progress. So in practice, only for large recording and with disk free space < recording size.

What is the expected behaviour?

Expect the transcode to fail and original recording be left unmodified. This lets user rerun the transcode later when he has freed more disk space.

What do you see instead?

Incomplete transcode is renamed over the original recording, permanently losing the tail of the recording.

Additional information

This bug is resolved by pull request #164 which detects any write/close failure. This causes mythtv to drop the .tmp file and keep the original file unmodified.

Wayland: Improve rendering performance

b6e7e18 fixed alpha blending issues when using Wayland but as noted in the commit this is not the most performant solution and we really need to call wl_surface_set_opaque_region to allow the compositor to optimise rendering. The current solution is also not guaranteed to continue working in the future.

This requires:-

  • linking to the wayland library (which is not currently required elsewhere)
  • retrieving both the current compositor and surface from the QT wayland platform plugin
  • update the opaque region for window resizes
  • retrieving compositor/surface needs QPlatformNativeInterface defined - which requires Qt private headers

libmythui: Fullscreen should always mean fullscreen

The main UI should always use a fullscreen widget/window if fullscreen is expected.

Currently, if the window size is adjusted (for overscan etc), then the window is resized and re-positioned.

It should still use a fullscreen widget but render into the visible (smaller) area.

This would fix display size adjustments where only fullscreen is supported (e.g. Android, linux eglfs/no x) and avoid a number of windowing issues that result from moving/resizing the window (a particular problem on macOS).

It would also allow the MythScreenWizard to work properly without having to launch another process - and removal of sundry UI code that is in place purely to workaround issues with launching a second UI process.

See also #227

libmythui: Use QProperty and QPropertyAnimation for animation effects

  • the current code causes a noticeable, perpetual system load as on each render pass each UI element is checked for updates.
  • using Qt for the animations would make this event driven, hence no load when no animations are active
  • it would also simplify extending animation support for other effects and make animations smoother

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.