Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ContentDecoder.cpp uses deprecated ffmpeg function calls #11

Open
GoogleCodeExporter opened this issue Mar 28, 2015 · 24 comments
Open

ContentDecoder.cpp uses deprecated ffmpeg function calls #11

GoogleCodeExporter opened this issue Mar 28, 2015 · 24 comments

Comments

@GoogleCodeExporter
Copy link

The file ContentDecoder/ContentDecoder.cpp in svn r130 does not compile with 
recent GNU/Linux distributions (I used Debian testing "wheezy", but see also
   http://electricsheep.org/node/51#comment-5107
for Fedora).

The error messages are:
../ContentDecoder/ContentDecoder.cpp: In member function ‘void 
ContentDecoder::CContentDecoder::Destroy()’:
../ContentDecoder/ContentDecoder.cpp:115:9: warning: ‘void 
av_close_input_file(AVFormatContext*)’ is deprecated (declared at 
/usr/include/libavformat/avformat.h:1622) [-Wdeprecated-declarations]
../ContentDecoder/ContentDecoder.cpp:115:47: warning: ‘void 
av_close_input_file(AVFormatContext*)’ is deprecated (declared at 
/usr/include/libavformat/avformat.h:1622) [-Wdeprecated-declarations]
../ContentDecoder/ContentDecoder.cpp: In member function ‘bool 
ContentDecoder::CContentDecoder::Open(const string&)’:
../ContentDecoder/ContentDecoder.cpp:159:89: error: ‘av_open_input_file’ 
was not declared in this scope
../ContentDecoder/ContentDecoder.cpp:169:17: warning: ‘int 
av_find_stream_info(AVFormatContext*)’ is deprecated (declared at 
/usr/include/libavformat/avformat.h:1446) [-Wdeprecated-declarations]
../ContentDecoder/ContentDecoder.cpp:169:55: warning: ‘int 
av_find_stream_info(AVFormatContext*)’ is deprecated (declared at 
/usr/include/libavformat/avformat.h:1446) [-Wdeprecated-declarations]
../ContentDecoder/ContentDecoder.cpp:222:20: warning: ‘int 
avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at 
/usr/include/libavcodec/avcodec.h:3569) [-Wdeprecated-declarations]
../ContentDecoder/ContentDecoder.cpp:222:70: warning: ‘int 
avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at 
/usr/include/libavcodec/avcodec.h:3569) [-Wdeprecated-declarations]
make[1]: *** [ContentDecoder.o] Fehler 1

Apparently, a deprecated ffmpeg interface is used.

The problem disappears if lines 32-34:
#ifdef MAC
   #define USE_NEW_FFMPEG_API
#endif

are replaced by
#define USE_NEW_FFMPEG_API

Instead of checking for macs, it would be preferable to introduce a feature 
check via an autoconf macro to determine the correct interface.

Adding
AC_CHECK_LIB([avformat], [av_open_input_file],
             AC_DEFINE([USE_OLD_FFMPEG_API]),
             AC_DEFINE([USE_NEW_FFMPEG_API]))
to configure.ac, for instance after line 155 (and removing lines 32-34 from 
ContentDecoder.cpp) solves the problem.

Additionally, the call to the function av_close_input_file in the current line 
116 is deprecated and should be replaced by the appropriate call 
(avformat_close_input?) when USE_NEW_FFMPEG_API is defined.

Original issue reported on code.google.com by andreas....@inria.fr on 3 Dec 2012 at 9:33

@GoogleCodeExporter
Copy link
Author

[deleted comment]

2 similar comments
@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

Thank you. I altered per recommendations above, then got a bit further, and 
failed again... I assume this is in relation to using Debian's wxWidgets rather 
than building fresh.

In file included from /usr/include/wx-2.8/wx/debug.h:22:0,
                 from /usr/include/wx-2.8/wx/defs.h:521,
                 from /usr/include/wx-2.8/wx/string.h:25,
                 from /usr/include/wx-2.8/wx/bitmap.h:19,
                 from config.h:11,
                 from config.cpp:8:
/usr/include/wx-2.8/wx/wxchar.h:1286:40: error: ‘time_t’ does not name a 
type
/usr/include/wx-2.8/wx/wxchar.h:1286:48: warning: ISO C++ forbids declaration 
of ‘timep’ with no type [-fpermissive]
In file included from /usr/include/wx-2.8/wx/variant.h:26:0,
                 from /usr/include/wx-2.8/wx/colour.h:48,
                 from /usr/include/wx-2.8/wx/bitmap.h:21,
                 from config.h:11,
                 from config.cpp:8:
/usr/include/wx-2.8/wx/datetime.h:585:30: error: expected ‘)’ before 
‘timet’
/usr/include/wx-2.8/wx/datetime.h:624:28: error: ‘Set’ declared as an 
‘inline’ field
/usr/include/wx-2.8/wx/datetime.h:624:24: error: expected ‘;’ at end of 
member declaration
/usr/include/wx-2.8/wx/datetime.h:624:35: error: expected ‘)’ before 
‘timet’
/usr/include/wx-2.8/wx/datetime.h:628:40: error: ‘wxDateTime& 
wxDateTime::Set(const tm&)’ conflicts with a previous declaration
/usr/include/wx-2.8/wx/datetime.h:624:28: note: previous declaration 
‘wxDateTime& wxDateTime::Set’
/usr/include/wx-2.8/wx/datetime.h:631:40: error: ‘wxDateTime::Set’ 
conflicts with a previous declaration
/usr/include/wx-2.8/wx/datetime.h:624:28: note: previous declaration 
‘wxDateTime& wxDateTime::Set’
/usr/include/wx-2.8/wx/datetime.h:634:31: error: ‘wxDateTime::Set’ 
conflicts with a previous declaration
/usr/include/wx-2.8/wx/datetime.h:624:28: note: previous declaration 
‘wxDateTime& wxDateTime::Set’
/usr/include/wx-2.8/wx/datetime.h:640:46: error: ‘wxDateTime::Set’ 
conflicts with a previous declaration
/usr/include/wx-2.8/wx/datetime.h:624:28: note: previous declaration 
‘wxDateTime& wxDateTime::Set’
/usr/include/wx-2.8/wx/datetime.h:650:46: error: ‘wxDateTime::Set’ 
conflicts with a previous declaration
/usr/include/wx-2.8/wx/datetime.h:624:28: note: previous declaration 
‘wxDateTime& wxDateTime::Set’
/usr/include/wx-2.8/wx/datetime.h:680:27: error: declaration of ‘operator=’ 
as non-function
/usr/include/wx-2.8/wx/datetime.h:680:25: error: expected ‘;’ at end of 
member declaration
/usr/include/wx-2.8/wx/datetime.h:680:34: error: expected ‘)’ before 
‘timet’
/usr/include/wx-2.8/wx/datetime.h:862:12: error: ‘time_t’ does not name a 
type
/usr/include/wx-2.8/wx/datetime.h:1098:12: error: ‘time_t’ does not name a 
type
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime()’:
/usr/include/wx-2.8/wx/datetime.h:580:5: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(const wxLongLong&)’:
/usr/include/wx-2.8/wx/datetime.h:1092:5: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In static member function ‘static tm* 
wxDateTime::GetTmNow()’:
/usr/include/wx-2.8/wx/datetime.h:1103:26: error: aggregate ‘tm 
l_CurrentTime’ has incomplete type and cannot be defined
/usr/include/wx-2.8/wx/datetime.h: In static member function ‘static 
wxDateTime wxDateTime::Now()’:
/usr/include/wx-2.8/wx/datetime.h:1596:15: error: aggregate ‘tm tmstruct’ 
has incomplete type and cannot be defined
/usr/include/wx-2.8/wx/datetime.h: At global scope:
/usr/include/wx-2.8/wx/datetime.h:1610:36: error: ‘wxDateTime::Set’ 
declared as an ‘inline’ variable
/usr/include/wx-2.8/wx/datetime.h:1610:36: error: ‘wxDateTime& 
wxDateTime::Set’ is not a static member of ‘class wxDateTime’
/usr/include/wx-2.8/wx/datetime.h:1610:36: error: ‘time_t’ was not declared 
in this scope
/usr/include/wx-2.8/wx/datetime.h:1611:1: error: expected ‘,’ or ‘;’ 
before ‘{’ token
/usr/include/wx-2.8/wx/datetime.h: In member function ‘wxDateTime& 
wxDateTime::operator=(const wxDateTime&)’:
/usr/include/wx-2.8/wx/datetime.h:140:24: error: non-static reference member 
‘wxDateTime& wxDateTime::Set’, can’t use default assignment operator
/usr/include/wx-2.8/wx/datetime.h: In member function ‘wxDateTime& 
wxDateTime::SetToCurrent()’:
/usr/include/wx-2.8/wx/datetime.h:1622:17: note: synthesized method 
‘wxDateTime& wxDateTime::operator=(const wxDateTime&)’ first required here 
/usr/include/wx-2.8/wx/datetime.h: At global scope:
/usr/include/wx-2.8/wx/datetime.h:1627:31: warning: ISO C++ forbids declaration 
of ‘wxDateTime’ with no type [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h:1627:31: error: ‘wxDateTime::wxDateTime’ 
declared as an ‘inline’ variable
/usr/include/wx-2.8/wx/datetime.h:1627:31: error: ‘int 
wxDateTime::wxDateTime’ is not a static member of ‘class wxDateTime’
/usr/include/wx-2.8/wx/datetime.h:1627:31: error: ‘time_t’ was not declared 
in this scope
/usr/include/wx-2.8/wx/datetime.h:1628:1: error: expected ‘,’ or ‘;’ 
before ‘{’ token
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(const tm&)’:
/usr/include/wx-2.8/wx/datetime.h:1633:8: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(const wxDateTime::Tm&)’:
/usr/include/wx-2.8/wx/datetime.h:1638:8: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(double)’:
/usr/include/wx-2.8/wx/datetime.h:1643:8: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(wxDateTime::wxDateTime_t, wxDateTime::wxDateTime_t, 
wxDateTime::wxDateTime_t, wxDateTime::wxDateTime_t)’:
/usr/include/wx-2.8/wx/datetime.h:1656:8: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: In constructor 
‘wxDateTime::wxDateTime(wxDateTime::wxDateTime_t, wxDateTime::Month, int, 
wxDateTime::wxDateTime_t, wxDateTime::wxDateTime_t, wxDateTime::wxDateTime_t, 
wxDateTime::wxDateTime_t)’:
/usr/include/wx-2.8/wx/datetime.h:1664:8: warning: uninitialized reference 
member ‘wxDateTime::Set’ [-fpermissive]
/usr/include/wx-2.8/wx/datetime.h: At global scope:
/usr/include/wx-2.8/wx/datetime.h:1686:8: error: ‘time_t’ does not name a 
type
In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:107:0,
                 from /usr/include/wx-2.8/wx/filefn.h:29,
                 from /usr/include/wx-2.8/wx/stream.h:22,
                 from /usr/include/wx-2.8/wx/image.h:23,
                 from config.h:12,
                 from config.cpp:8:
/usr/include/x86_64-linux-gnu/bits/stat.h:91:21: error: field ‘st_atim’ has 
incomplete type
/usr/include/x86_64-linux-gnu/bits/stat.h:92:21: error: field ‘st_mtim’ has 
incomplete type
/usr/include/x86_64-linux-gnu/bits/stat.h:93:21: error: field ‘st_ctim’ has 
incomplete type
/usr/include/x86_64-linux-gnu/bits/stat.h:152:21: error: field ‘st_atim’ 
has incomplete type
/usr/include/x86_64-linux-gnu/bits/stat.h:153:21: error: field ‘st_mtim’ 
has incomplete type
/usr/include/x86_64-linux-gnu/bits/stat.h:154:21: error: field ‘st_ctim’ 
has incomplete type
In file included from /usr/include/wx-2.8/wx/stream.h:22:0,
                 from /usr/include/wx-2.8/wx/image.h:23,
                 from config.h:12,
                 from config.cpp:8:
/usr/include/wx-2.8/wx/filefn.h:689:18: error: ‘time_t’ does not name a type
make[1]: *** [config.o] Error 1
make[1]: Leaving directory 
`/home/setx/electricsheep-read-only/client_generic/MSVC/SettingsGUI'
make: *** [all-recursive] Error 1

Original comment by TheMikeF...@gmail.com on 16 Feb 2013 at 10:50

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

This looks like a missing line
   #include <ctime>
somewhere in the code.

If you commit the first modifications to svn, one could work on from that.

Original comment by andreas....@inria.fr on 18 Feb 2013 at 10:20

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Confirmed working on fedora 18 with commenting out
#ifdef MAC
   #define USE_NEW_FFMPEG_API
#endif

and adding 

#define USE_NEW_FFMPEG_API

on line 35

and adding 

#include        <ctime>

of line 31

in ContentDecoder/ContentDecoder.cpp

adding the following to configure.ac after 155:

AC_CHECK_LIB([avformat], [av_open_input_file],
             AC_DEFINE([USE_OLD_FFMPEG_API]),
             AC_DEFINE([USE_NEW_FFMPEG_API]))


build completed, thanks for the info on how to solve the error, couldnt find 
out how to fix it elsewhere.

Original comment by sfertig...@gmail.com on 19 Jul 2013 at 8:07

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Electric it seems does not work 100% in fedora with the above, it compiles but 
you only see the "downloading stuff" screen, will investigate further

Original comment by nikkolp...@gmail.com on 20 Jul 2013 at 3:44

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Thanks for the input, guys! I have been battling with building electricsheep on 
my Arch Linux installation with GCC 4.8.1 for some time now. The tips regarding 
the changes in ContentDecoder.cpp have certainly helped but the build process 
still fails on me.

The resulting log is just too long to be posted here but it's a mixed bag of 
undeclared symbols, like:

In file included from /usr/include/sys/stat.h:105:0,
                 from ../../TupleStorage/diriterator.cpp:1:
/usr/include/bits/stat.h:91:21: error: field ‘st_atim’ has incomplete type
     struct timespec st_atim;  /* Time of last access.  */
                     ^
/usr/include/bits/stat.h:92:21: error: field ‘st_mtim’ has incomplete type
     struct timespec st_mtim;  /* Time of last modification.  */
                     ^
/usr/include/bits/stat.h:93:21: error: field ‘st_ctim’ has incomplete type
     struct timespec st_ctim;  /* Time of last status change.  */

BTW prepending "#include <ctime>" does not do much good here as the build the 
fails with:

/usr/include/c++/4.8.1/ctime:60:11: error: ‘::clock_t’ has not been declared
   using ::clock_t;
           ^
/usr/include/c++/4.8.1/ctime:61:11: error: ‘::time_t’ has not been declared
   using ::time_t;
           ^
/usr/include/c++/4.8.1/ctime:62:11: error: ‘::tm’ has not been declared
   using ::tm;

etc.

There are also some wxWidgets errors in there:

electricsheepguiMyDialog2.cpp: In member function ‘virtual void 
electricsheepguiMyDialog2::OnProxyUserNameEnter(wxCommandEvent&)’:
electricsheepguiMyDialog2.cpp:914:95: error: no matching function for call to 
‘std::basic_string<char>::basic_string(wxString)’

I have no idea where to look for the culprits unfortunately but I'll try to 
keep at it. If anyone can chime in with some ideas, I will gladly be of service.

Original comment by znovo...@gmail.com on 29 Sep 2013 at 10:57

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

@znovo: 

What version of wxWidgets are you using? (wxGTK / etc.)

I found I got the same error with electricsheepguiMyDialog2.cpp when using 
wxWidgets 2.8, no issue when upgrading to 2.9:

http://codelite.org/LiteEditor/WxWidgets29Binaries

Original comment by theallis...@gmail.com on 2 Oct 2013 at 2:54

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

Bug has been open since 2012, doesnt look like its going to be fixed anytime 
soon. IMO the priority should be changed to High as the application doesnt even 
run on RHEL/Fedora machines

Original comment by sfertig...@gmail.com on 14 Oct 2013 at 2:02

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

We need a Linux maintainer.  Priority isn't the issue.

Original comment by scottdra...@gmail.com on 14 Oct 2013 at 2:54

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Thanks for getting back, guys! 

@theallis good point about wxgtk, I was actually using version 2.8 (blindly 
believing my Arch Linux installation always uses the latest version -- wxgtk 
2.9 is an optional alternative). I was able to modify configure.ac to look for 
version 2.9 but even then the build process dies because of undeclared 
time-related functions/structures. The amount of errors generated almost makes 
me believe there is something fundamentally wrong with the include path 
although for the moment, the only modified file in my local checkout of the SVN 
is the configure.ac script. Or, it may be my build environment...

@scott maintaining electricsheep might be an interesting hobby for me although 
I have never maintained a project based on many external libraries and toolsets 
so I'm not totally sure if I'd be up to the task. I'll see what I can do to 
brush up on the required knowledge.

Original comment by znovo...@gmail.com on 15 Oct 2013 at 9:03

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

If you're still seeing the time-related compile errors, you probably tried 
running that patch script for fedora 16/18 and need to remove the links it adds 
in /usr/include:

cd /usr/include
sudo rm -rf libavformat libavcodec libavutil

At least that got rid of those warnings for me, and allowed everything to 
compile.  (Which made me *so* happy!)  Sadly, there is more to this problem 
than compilation.

If I run the electricsheep binary, it downloads sheep and tries to start 
playing them, but ends up just looping through all of them and not playing any 
(looks like it's hung, but I think it's just endlessly looping-- regardless, 
nothing is displayed and you have to ^C the process).  "Failed to get frame..." 
is the only WARN.

When I run the preferences they show up for a couple seconds and then die with:

Pango:ERROR:pango-layout.c:3863:pango_layout_check_lines: assertion failed: 
(!layout->log_attrs)

No problem, start the prefs and click on "Run" right away (which starts the 
instantly hung electricsheep process) and then switch back over to the 
properties window-- it'll stay open now and you can set whatever you want. 
(woohoo! =]p)

Obviously one can edit the prefs by hand, so not much gained there, but 
whatever.

Anyhow, it's totes more promising to have things apparently compiling 
correctly, but something is still borked in the player.  

Perhaps there are some other OS switches we need to look at besides the FFMPEG 
api one (since that is based on target OS, vs. a switch for the FFMPEG api 
version itself as proposed in the initial comment) or some-such.  Didn't see 
anything that jumped out at me tho.

Of course, I suck at C++, so probably won't be much help.  :)

FWIW, I'm running this on F19, and here is what the log says (endlessly loop'n, 
apparently the 9th iteration below... the log just grows and grows):

...
[INFO-17:34:43]: 'Picked connection 78111 from pq (playcount 9 )'
[INFO-17:34:43]: 'Next sheep chosen: 78111 played 9 times'
[INFO-17:34:43]: 'Opening: 
/home/awesomesauce/es/mpeg/00244=80212=79916=78111.avi'
[WARN-17:34:43]: 'failed to get frame...'
[INFO-17:34:43]: 'Open done()'
[INFO-17:34:43]: 'calling Next()'
[WARN-17:34:43]: 'failed to get frame...' x1
[INFO-17:34:43]: 'GraphAlgo: CurrentSheep = 78111'
[INFO-17:34:43]: 'picking edge!'
[INFO-17:34:43]: 'no loops'
[INFO-17:34:43]: 'Picked connection 80213 from pq (playcount 9 )'
[INFO-17:34:43]: 'Next sheep chosen: 80213 played 9 times'
[INFO-17:34:43]: 'Opening: 
/home/awesomesauce/es/mpeg/00244=78111=78111=78111.avi'
[WARN-17:34:43]: 'failed to get frame...'
...

Original comment by valliant...@gmail.com on 15 Oct 2013 at 6:58

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

I should also note that the only difference between the SVN sources (R146) and 
my currently compiling (on FC19) code is:

-#ifdef MAC
-       #define USE_NEW_FFMPEG_API
-#endif
+#define USE_NEW_FFMPEG_API

I did *not* have to add <ctime> and I skipped modding configure.ac (you'd add 
that edit and totally remove this switch to do it right, as the OP stated).

Original comment by valliant...@gmail.com on 15 Oct 2013 at 7:13

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

@valliant -- Actually I have not used any script (as I'm not running FC), all 
of the directories in /usr/include that you mention are regular directories 
owned by ffmpeg.

I had to mod configure.ac because wxgtk 2.9 on Arch Linux uses a different name 
for the wx-config tool (called wx-config-2.9) since you can have both 2.8 and 
2.9 installed simultaneously. I also used the AC_CHECK_LIB macro posted above 
to test for old/new ffmpeg library API but that is all.

I think I'll have to dig down during the weekend and *really* try to figure 
this out. Thanks for the help so far! :)

Original comment by znovo...@gmail.com on 16 Oct 2013 at 4:55

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Okay, I may be on to something -- been googling around this morning and seen a 
post at StackOverflow suggesting it's a name conflict between unrelated header 
files with the same name.

Now, in this case it seems that the time.h file from libavutil clashes with the 
system time.h. I guess reordering the include search path might help here.

(Btw. am I the only one who thinks giving a header file the same name as some 
other system file is not the best idea? :| )

Original comment by znovo...@gmail.com on 29 Oct 2013 at 8:38

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Okay, I finally managed to get electricsheep to compile. The culprit were the 
lines in MSVC/SettingsGUI/Makefile.am that added include search paths for 
libav* libraries.

It seems the header files in those respective directories are not in use (yet) 
so I reckon it'd be best if those files were included with the subdirectories 
added in the #include directives to prevent any similar conflict.

Now I'll try to see what happens when the download of the first flock finishes 
-- as was posted earlier, the screensaver gets stuck on the "download" screen.

Original comment by znovo...@gmail.com on 4 Nov 2013 at 8:57

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

any chance this will ever run on any RHEL at all? ever? bugs been open for a 
long time so i was just wondering.

Original comment by scristop...@gmail.com on 11 Dec 2013 at 12:30

  • Added labels: ****
  • Removed labels: ****

@GoogleCodeExporter
Copy link
Author

Posting in the forum seems disabled, so I'll leave this here.

When attempting to compile r160 on Ubuntu 14.10 (libavcodec-dev/libavformat-dev 
6:11-1) with:
autoreconf -vfi && ./autogen.sh && ./configure && make

I get this error:
../ContentDecoder/ContentDecoder.cpp: In member function ‘bool 
ContentDecoder::CContentDecoder::Open(ContentDecoder::sOpenVideoInfo*)’:
../ContentDecoder/ContentDecoder.cpp:240:131: error: ‘AVStream’ has no 
member named ‘r_frame_rate’
   ovi->m_totalFrameCount = uint32(((((double)ovi->m_pFormatContext->duration/(double)AV_TIME_BASE)) / av_q2d(ovi->m_pVideoStream->r_frame_rate) + .5));
                                                                                                                                   ^
Makefile:1006: recipe for target 'ContentDecoder.o' failed


Workaround:
In ContentDecoder/ContentDecoder.cpp replace the two occurrences of 
'r_frame_rate' with 'avg_frame_rate'

Original comment by skinlay...@gmail.com on 28 Feb 2015 at 2:17

  • Added labels: ****
  • Removed labels: ****

@raboof
Copy link
Contributor

raboof commented Mar 29, 2015

I'm running into the same problem.

It looks like there are 2 versions of avformat.h: one from 'libavformat-dev' and one from 'libavformat-ffmpeg-dev'. r_frame_rate is only available in the one from 'libavformat-ffmpeg-dev'.

Unfortunately, ContentDecoder also uses 'swscale', and on Debian, 'libswscale-dev' depends on 'libavutil-dev', not 'libavutil-ffmpeg-dev'. Thus Debian disallows libswscale-dev and libavformat-ffmpeg-dev from being installed at the same time.

So the fix for this situation would be either:

  • make electricsheep independent of ffmpeg-specific features (i.e. not using r_frame_rate - but I'm not sure avg_frame_rate is a proper alternative).
  • convince Debian that libswscale-dev and libavformat-ffmpeg-dev can co-exist (not sure what the situation behind that is)

@skinlayers
Copy link

According to this, avg_frame_rate is the proper replacement for r_frame_rate:

https://wiki.libav.org/Migration/10#r_frame_rate

@dasvo
Copy link
Collaborator

dasvo commented Jun 19, 2015

I changed the code to use avg_frame_rate instead of r_frame_rate.

@EndlessEden
Copy link

is this still being worked on?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants