[FFmpeg-devel] DVB EPG decoder

Submitted by Anthony Delannoy on Aug. 21, 2019, 4:28 p.m.

Details

Message ID CAF7m-47_S83ppQOimvnbh_6RasbPZ3utyw2mPRxGcWCqhJNsSg@mail.gmail.com
State New
Headers show

Commit Message

Anthony Delannoy Aug. 21, 2019, 4:28 p.m.
Hi,

In the attached files is the first implementation of:
* dvb descriptors parsing api to ease their use on different sections (for
now i've only implemented EIT section)
* EIT table and subtable
* EIT callback in lavf/mpegts.c generating epg AVPacket
* EPG decoder to decode epg AVPacket and store decoded infos in
AVFrame::side_data with a new type AV_FRAME_DATA_EPG_TABLE

I kept the EPG{Sub,}Table as raw as possible, EPG data manipulation have to
be done using FFmpeg API for now.

Let me know if those patch need changements/improvements.

Anthony Delannoy

Comments

Michael Niedermayer Aug. 22, 2019, 10:42 a.m.
On Wed, Aug 21, 2019 at 06:28:08PM +0200, Anthony Delannoy wrote:
> Hi,
> 
> In the attached files is the first implementation of:
> * dvb descriptors parsing api to ease their use on different sections (for
> now i've only implemented EIT section)
> * EIT table and subtable
> * EIT callback in lavf/mpegts.c generating epg AVPacket
> * EPG decoder to decode epg AVPacket and store decoded infos in
> AVFrame::side_data with a new type AV_FRAME_DATA_EPG_TABLE
> 
> I kept the EPG{Sub,}Table as raw as possible, EPG data manipulation have to
> be done using FFmpeg API for now.
> 
> Let me know if those patch need changements/improvements.

fate checksums change so this needs to update them if the changes are intended

fails to build on MIPS
CC	libavcodec/epgdec.o
In file included from src/libavcodec/epgdec.c:31:
src/libavutil/dvb.h:123: warning: declaration does not declare anything
In file included from src/libavcodec/epgdec.c:31:
src/libavutil/dvb.h:158: warning: declaration does not declare anything
In file included from src/libavcodec/epgdec.c:32:
src/libavutil/dvbdescriptors.h:275: warning: declaration does not declare anything
In file included from src/libavcodec/epgdec.c:32:
src/libavutil/dvbdescriptors.h:748: warning: declaration does not declare anything
In file included from src/libavcodec/epgdec.c:32:
src/libavutil/dvbdescriptors.h:965: warning: declaration does not declare anything
src/libavcodec/epgdec.c: In function ‘epg_handle_descriptor’:
src/libavcodec/epgdec.c:57: error: ‘EPGSubTable’ has no member named ‘descriptors’
src/libavcodec/epgdec.c:57: error: ‘EPGSubTable’ has no member named ‘nb_descriptors’
src/libavcodec/epgdec.c:61: error: ‘EPGSubTable’ has no member named ‘descriptors’
src/libavcodec/epgdec.c:61: error: ‘EPGSubTable’ has no member named ‘nb_descriptors’
src/libavcodec/epgdec.c: In function ‘epg_receive_frame’:
src/libavcodec/epgdec.c:159: error: ‘EPGTable’ has no member named ‘subtables’
src/libavcodec/epgdec.c:159: error: ‘EPGTable’ has no member named ‘nb_subtables’
src/libavcodec/epgdec.c:162: error: ‘EPGTable’ has no member named ‘subtables’
src/libavcodec/epgdec.c:162: error: ‘EPGTable’ has no member named ‘nb_subtables’
src/libavcodec/epgdec.c:163: error: ‘EPGTable’ has no member named ‘subtables’
src/libavcodec/epgdec.c:163: error: ‘EPGTable’ has no member named ‘nb_subtables’
src/libavcodec/epgdec.c:165: error: ‘EPGTable’ has no member named ‘subtables’
src/libavcodec/epgdec.c:165: error: ‘EPGTable’ has no member named ‘nb_subtables’
make: *** [libavcodec/epgdec.o] Error 1


[...]
Carl Eugen Hoyos Aug. 22, 2019, 11:05 a.m.
Am Do., 22. Aug. 2019 um 12:42 Uhr schrieb Michael Niedermayer
<michael@niedermayer.cc>:
>
> On Wed, Aug 21, 2019 at 06:28:08PM +0200, Anthony Delannoy wrote:
> > Hi,
> >
> > In the attached files is the first implementation of:
> > * dvb descriptors parsing api to ease their use on different sections (for
> > now i've only implemented EIT section)
> > * EIT table and subtable
> > * EIT callback in lavf/mpegts.c generating epg AVPacket
> > * EPG decoder to decode epg AVPacket and store decoded infos in
> > AVFrame::side_data with a new type AV_FRAME_DATA_EPG_TABLE
> >
> > I kept the EPG{Sub,}Table as raw as possible, EPG data manipulation have to
> > be done using FFmpeg API for now.
> >
> > Let me know if those patch need changements/improvements.
>
> fate checksums change so this needs to update them if the changes are intended

To clarify: This should not be a 13th patch but every patch has to include
the fate changes it causes.

> fails to build on MIPS

Seems to be because of these two structs within EPGTable and EPGSubTable:
+    struct {
+        int nb_descriptors;
+        void **descriptors;
+    };

Some of your new files do not contain license headers, please fix that
independently
of other reviews.

Afaict, some patches change files that were added in earlier patches. This may
not be ideal.

Why are the big api changes necessary at all?

Carl Eugen

Patch hide | download patch | download mbox

From d174bc5921d8813a481091fdc1698ae3a2b46548 Mon Sep 17 00:00:00 2001
From: Anthony Delannoy <anthony.2lannoy@gmail.com>
Date: Wed, 21 Aug 2019 18:06:07 +0200
Subject: [PATCH 12/12] tests/fate: add new files in ref

---
 tests/ref/fate/source | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tests/ref/fate/source b/tests/ref/fate/source
index ad1e5b95d6..a1d0d3ffd1 100644
--- a/tests/ref/fate/source
+++ b/tests/ref/fate/source
@@ -13,6 +13,8 @@  libavfilter/log2_tab.c
 libavformat/file_open.c
 libavformat/golomb_tab.c
 libavformat/log2_tab.c
+libavutil/dvb.c
+libavutil/dvbdescriptors.c
 libswresample/log2_tab.c
 libswscale/log2_tab.c
 tools/uncoded_frame.c
@@ -28,5 +30,8 @@  compat/avisynth/windowsPorts/windows2linux.h
 compat/djgpp/math.h
 compat/float/float.h
 compat/float/limits.h
+libavutil/componenttables.h
+libavutil/contenttables.h
+libavutil/linkagetables.h
 Use of av_clip() where av_clip_uintp2() could be used:
 Use of av_clip() where av_clip_intp2() could be used:
-- 
2.23.0