markad-plugin (noad) -> Alpha Testversion

  • Hallo zusammen,


    aufgrund von meinem Beitrag hier -> http://vdr-portal.de/board/thr…?postid=837862#post837862 habe ich mich entschlossen mein dort erwähntes Testprogramm in ein richtiges Plugin zu packen.


    Heraus gekommen ist dabei das angehängte "proof-of-concept", das ich auf meinem Produktivsystem am Laufen habe.


    Zur Zeit gibt es keinerlei Einstellungen. Das Plugin wird mit jeder Aufzeichnung gestartet und bei dessen Ende auch wieder beendet, es läuft also Online. Es exisitert (bislang) keine Offline-Version.


    Es müsste somit auch mit TS-Aufnahmen funktionieren und sogar mit H264, aber ich habe dafür keine Testumgebung. Vorraussetzung ist lediglich libavcodec.


    Umgesetzt ist gerade nur das Dekodieren der Videoframes, die AspectRatio-Erkennung und eine horizontale Balkenerkennung. Desweiteren werden Marken beim Anfang und Ende eines Events gesetzt, bzw. am Anfang eines Timers.


    Der originale Noad sollte zu Testzwecken abgeschaltet werden, sonst kommen sich die beiden Prozesse in die Quere und man weiss nicht, welcher welche Marke gesetzt hat.


    Gruß


    Joe_D


    P.S.: Teilt mir bitte eure Erfahrungen mit...


    Hier geht es zur v0.0.2 -> http://vdr-portal.de/board/thr…?postid=841277#post841277


    Edit: Titel geändert in markad

  • Servus,


    hört sich gut an, deine Entwicklung!


    Ich denke nur, du solltest dringend einen anderen Namen wählen, da es sonst zum totalen Chaos kommt, wenn zwei unterschiedliche Entwicklungen den gleichen Namen tragen.


    Gruß,
    Robert


    Hardware: Antec Fusion Remote Black, Asus P5N7A-VM, E5200, Mystique SaTiX-S2 Dual V2, Stereo-Atmo
    TV: Samsung UE32B6000, BenQ W1070
    Software: yaVDR


  • Hi!


    Das hört sich sehr gut an. Freut mich sehr dass sich jemand diesem Thema annimmt. Noad ist mit das wichtigste VDR-Plugin/Tool.
    Allerdings komme ich nicht weiter beim Kompilieren. Scheint so als sei die libavcodec in Ubuntu 9.04 zu alt (wobei das nicht alt aussieht):


    Code
    1. libavcodec-dev:
    2. Installiert: 3:0.svn20090303-1ubuntu6
    3. Kandidat: 3:0.svn20090303-1ubuntu6
    4. Versions-Tabelle:
    5. *** 3:0.svn20090303-1ubuntu6 0
    6. 500 http://at.archive.ubuntu.com jaunty/main Packages
    7. 100 /var/lib/dpkg/status


    Allerdings kompiliert das Plugin nicht mit der Meldung:

    Code
    1. g++ -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"noad"' -I/usr/local/src/DVB/linux/include -I../../../include recv.cpp
    2. recv.cpp:11:21: Fehler: avcodec.h: No such file or directory
    3. recv.cpp: In member function »virtual void cNoadReceiver::Action()«:
    4. recv.cpp:224: Fehler: »AVPacket« wurde in diesem Gültigkeitsbereich nicht definiert
    5. recv.cpp:224: Fehler: expected `;' before »avpkt«
    6. recv.cpp:227: Fehler: »avpkt« wurde in diesem Gültigkeitsbereich nicht definiert
    7. recv.cpp:227: Fehler: »av_init_packet« wurde in diesem Gültigkeitsbereich nicht definiert
    8. recv.cpp:245: Fehler: »avpkt« wurde in diesem Gültigkeitsbereich nicht definiert
    9. recv.cpp:247: Fehler: »avcodec_decode_video2« wurde in diesem Gültigkeitsbereich nicht definiert
    10. make: *** [recv.o] Fehler 1



    Und in /usr/include/libavcodec/avcodec.h scheint es kein AVPacket zu geben. Da steht folgendes zur Version:

    Code
    1. #define LIBAVCODEC_VERSION_MAJOR 52
    2. #define LIBAVCODEC_VERSION_MINOR 20
    3. #define LIBAVCODEC_VERSION_MICRO 0


    Hast du da eine Idee?


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hallo Brougs78,
    da wird doch ein Header gar nicht gefunden:

    Code
    1. recv.cpp:11:21: Fehler: avcodec.h: No such file or directory


    Da stimmt wohl 'was mit den include-Pfaden nicht.


    Gruß


    Dominik

    VDR: Thermaltake DH102, Asus M3N78-PRO AMD 4850e, GT 220 passiv, 1x Mystique SaTiX-S2 Dual

    The post was edited 1 time, last by domml ().

  • Hi,


    auch bei mir gehts nicht durch den Kompiler, snif.....


    Code
    1. recv.cpp: In constructor ‘cNoadReceiver::cNoadReceiver(cTimer*, const char*, int)’:
    2. recv.cpp:31: error: ‘DVBFE_DELSYS_DVBS2’ was not declared in this scope


    Scheint wohl nur mit multiproto zu Laufen. Ich habe aber schon länger auf den v4l-Zweig gewechselt.


    Gruß
    Wolfgang

  • Hi!


    Sorry, war die falsche Fehlermeldung, hatte da herumgebastelt. avcodec.h müsste gefunden werden (kommt kein Fehler mehr), abee wie gesagt ist da AVPacket nicht definiert.


    wbreu : für DVB-S2 habe ich folgendes geändert:


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • wbreu


    Das DVBFE_DELSYS_DVBS2 ist eigentlich nur für den 1.7.x-Zweig gedacht. Den habe ich gar nicht, das war eben nur Testcode. Das kannste ja mal testweise einfach komplett rausnehmen.


    Edit: Wie ich gerade von Brougs78 sehe, muss das SYS_DVBS2 heissen, einfach umbenennen.


    Brougs78


    Die ffmpeg Header sind bei mir unter /usr/include/libavcodec/avcodec.h, evtl. sind die ja bei Dir woanders. Kuck mal wo die sind.


    Robsta


    Da habe ich mir heute auch schon was überlegt, z.B. MarkAd. Bin aber für Vorschläge offen


    Gruß


    Joe_D

  • Hi!


    Ja da sind sie bei mir auch. Mit der Major Version 52 und Minor Version 20 lt. Header File.
    Hast du da was neueres. Wie gesagt habe Ubuntu 9.04.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Quote

    Original von Joe_D
    Da habe ich mir heute auch schon was überlegt, z.B. MarkAd. Bin aber für Vorschläge offen


    Wie wärs mit Anlehnung an FFMPEG mit FAAD für "F*** Annoying Advertisement" :lol2

  • Hi!


    Das wäre wirklich toll. Danke.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hallo @ all !


    Tolle Idee, ein noad-Plugin. Wird den WAF für die 1.7.x gewaltig erhöhen :-)


    Bekomme unter Gen2VDR 3 Beta allerdings nach der erforderlichen SYS_DVBS2-Umbenennung ebenfalls folgende Fehlermeldung:

    Code
    1. recv.cpp: In member function âvirtual void cNoadReceiver::Action()â:
    2. recv.cpp:222: error: âAVPacketâ was not declared in this scope
    3. recv.cpp:222: error: expected `;' before âavpktâ
    4. recv.cpp:225: error: âavpktâ was not declared in this scope
    5. recv.cpp:225: error: âav_init_packetâ was not declared in this scope
    6. recv.cpp:243: error: âavpktâ was not declared in this scope
    7. recv.cpp:245: error: âavcodec_decode_video2â was not declared in this scope
    8. make: *** [recv.o] Error 1

    Die FFMPEG-Version ist 0.5-r1 mit der avcodec-Version 52.20.0

  • Hi,


    erste Tests auf RTL in ts sehen gut aus.


    Aber auf Anixe HD mit h264 gibt's erhöhte CPU-Last, da das Logging sehr viele




    bringt.


    Sieht aber schon gut aus, weiter so.


    Gruß
    Wolfgang


  • Hi Joe,


    ich bekomme beim start diese Meldung:


    Code
    1. ERROR: /usr/local/bin/plugins/libvdr-noad.so.1.7.9: undefined symbol: av_init_packet


    Version: 3:20080706-0.3lenny1


    Gruß,
    Alex

    Server: CPU J1900 | 1x CineS2 | Debian Stretch | VDR 2.4.0
    Client: 2x Himbeere mit vdr

  • hi
    danke das du dier die arbeit machst
    habe auch den fehler
    ERROR: /usr/local/bin/plugins/libvdr-noad.so.1.7.0: undefined symbol: av_init_packet
    mfg det

    Jeder sollte sein Leben so leben können wie er/sie es möchte, frei und
    unabhängig, in der Not anderen zur Seite stehend, nie vergessen was man
    ist, eben einfach nur Mensch sein mit allen Schwächen und Stärken
    Lieber stehend sterben als ewig gebückt leben

  • Hallo,


    coole sachte, auch hier laufen die ersten Tests....


    Anbei ein kleiner Verbesserungsvorschlag in Richtung ffmpeg Einbindung.
    Hier eine Modifizierung, mit der per pkg-config die korrekten Pfade von libavcodec ermittelt werden.



    Andreas

  • Mit vdr-1.7.0 lässt es sich auf meinem Tessystem nicht übersetzen. :(


    Code
    1. g++ -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses -ggdb -O0 -fPIC -c -DUSE_ATSC -DUSE_CHANNELSCAN -DUSE_CMDSUBMENU -DUSE_CUTTERLIMIT -DUSE_CUTTERQUEUE -DUSE_CUTTIME -DUSE_DDEPGENTRY -DUSE_DELTIMESHIFTREC -DUSE_DOLBYINREC -DUSE_DVBSETUP -DUSE_DVDARCHIVE -DUSE_DVLRECSCRIPTADDON -DUSE_DVLVIDPREFER -DUSE_DVLFRIENDLYFNAMES -DUSE_GRAPHTFT -DUSE_HARDLINKCUTTER -DUSE_JUMPPLAY -DUSE_LIEMIEXT -DUSE_LIRCSETTINGS -DUSE_LIVEBUFFER -DUSE_LNBSHARE -DUSE_MAINMENUHOOKS -DUSE_MENUORG -DUSE_NOEPG -DUSE_OSDMAXITEMS -DUSE_PARENTALRATING -DUSE_PINPLUGIN -DUSE_PLUGINMISSING -DUSE_PLUGINPARAM -DUSE_ROTOR -DUSE_SETTIME -DUSE_SOFTOSD -DUSE_SOURCECAPS -DUSE_SORTRECORDS -DUSE_STREAMDEVEXT -DUSE_TIMERCMD -DUSE_TIMERINFO -DUSE_TTXTSUBS -DUSE_VALIDINPUT -DUSE_VOLCTRL -DUSE_WAREAGLEICON -DUSE_YAEPG -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"noad"' -I/usr/include/PCSC -I/usr/local/src/DVB/linux/include -I../../../include noad.cpp
    2. g++ -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses -ggdb -O0 -fPIC -c -DUSE_ATSC -DUSE_CHANNELSCAN -DUSE_CMDSUBMENU -DUSE_CUTTERLIMIT -DUSE_CUTTERQUEUE -DUSE_CUTTIME -DUSE_DDEPGENTRY -DUSE_DELTIMESHIFTREC -DUSE_DOLBYINREC -DUSE_DVBSETUP -DUSE_DVDARCHIVE -DUSE_DVLRECSCRIPTADDON -DUSE_DVLVIDPREFER -DUSE_DVLFRIENDLYFNAMES -DUSE_GRAPHTFT -DUSE_HARDLINKCUTTER -DUSE_JUMPPLAY -DUSE_LIEMIEXT -DUSE_LIRCSETTINGS -DUSE_LIVEBUFFER -DUSE_LNBSHARE -DUSE_MAINMENUHOOKS -DUSE_MENUORG -DUSE_NOEPG -DUSE_OSDMAXITEMS -DUSE_PARENTALRATING -DUSE_PINPLUGIN -DUSE_PLUGINMISSING -DUSE_PLUGINPARAM -DUSE_ROTOR -DUSE_SETTIME -DUSE_SOFTOSD -DUSE_SOURCECAPS -DUSE_SORTRECORDS -DUSE_STREAMDEVEXT -DUSE_TIMERCMD -DUSE_TIMERINFO -DUSE_TTXTSUBS -DUSE_VALIDINPUT -DUSE_VOLCTRL -DUSE_WAREAGLEICON -DUSE_YAEPG -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"noad"' -I/usr/include/PCSC -I/usr/local/src/DVB/linux/include -I../../../include recv.cpp
    3. recv.cpp: In constructor »cNoadReceiver::cNoadReceiver(cTimer*, const char*, int)«:
    4. recv.cpp:31: Fehler: »DVBFE_DELSYS_DVBS2« wurde in diesem Gültigkeitsbereich nicht definiert
    5. make: *** [recv.o] Fehler 1
    6. Error compiling noad