https://bugs.kde.org/show_bug.cgi?id=407153

--- Comment #8 from Wolfgang Bauer <wba...@tmo.at> ---
(In reply to Mauro Carvalho Chehab from comment #5)
> VLC < 3 has a problem with H-264 parser, with causes it to not work properly
> with MPEG-TS: the problem is that it doesn't properly find the start of an
> H.264 frame. When a TV channel is switched, it is unlikely to get the start
> of an H.264 frame: it will generally get in the middle. In practice, one has
> to try several times to setup a channel until VLC recognizes the stream.

Well, my DVB card doesn't support DVB-S2 (only DVB-S), so I can't tell.

> Also, it doesn't support new types of encoding, like H-265.

It should support H.265 via the libavcodec plugin I think.

> Is it worth?

Well, I don't know.

The only reason I stumbled over this is that openSUSE Leap 42.3 only has vlc
2.2.x, and I updated openSUSE's kaffeine package yesterday in the (optional)
KDE:Extra repo that is also available for 42.3.
OTOH, that's probably not really a big problem, as Leap 42.3 will be EOL in
less than 2 months anyway.

(In reply to Mauro Carvalho Chehab from comment #4)
> Fixing it should probably be trivial. Either I forgot to add an event used
> on vlc 2 to notify about playback status changes or we need to restore the
> diff changes at makePlay() if vlc < 3. This was removed from makePlay,
> because it was not required with vlc 3 (and/or broke something - don't
> remember the exact issue I found on that time):
> 
>  int VlcMediaWidget::makePlay()
>  {
>         if (vlcMedia == NULL) {
> @@ -343,18 +578,7 @@ int VlcMediaWidget::makePlay()
>                 return -1;
>         }
>  
> -       libvlc_event_manager_t *eventManager =
> libvlc_media_event_manager(vlcMedia);
> -       libvlc_event_e eventTypes[] = { libvlc_MediaMetaChanged };
> -
> -       for (uint i = 0; i < (sizeof(eventTypes) / sizeof(eventTypes[0]));
> ++i) {
> -               if (libvlc_event_attach(eventManager, eventTypes[i],
> vlcEventHandler, this) != 0) {
> -                       qCWarning(logMediaWidget, "Cannot attach event
> handler %d", eventTypes[i]);
> -               }
> -       }
> -
>         libvlc_media_player_set_media(vlcMediaPlayer, vlcMedia);
> -       libvlc_media_release(vlcMedia);
> -       vlcMedia = NULL;
That patch didn't help. Reverting
https://cgit.kde.org/kaffeine.git/commit/?id=d03abc77ad40a3ca25b011c865183f1b6ddf8f87
completely fixed it though.

But, I now noticed that I actually get an error message in konsole:
This object event manager doesn't know about 'MediaMetaChanged' events03-05-19
08:42:00.086 [Critical] kaffeine.mediawidget: Cannot attach event handler 0

So obviously libvlc 2.2 doesn't like the MediaMetaChanged event being attached
in the constructor.
This patch would fix playback with libvlc 2.2:
@@ -170,7 +170,6 @@ VlcMediaWidget::VlcMediaWidget(QWidget *parent) :
AbstractMediaWidget(parent),
     typeOfDevice(""), trackNumber(1), numTracks(1)
 {
        libvlc_event_e events[] = {
-               libvlc_MediaMetaChanged,
                libvlc_MediaPlayerEncounteredError,
                libvlc_MediaPlayerEndReached,
                libvlc_MediaPlayerLengthChanged,

(although it should probably be attached again in makePlay() then I suppose)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to