Bug #1732

Latest git - transcoding - compile fail

Added by NiCrAm 0oo0 about 2 years ago. Updated over 1 year ago.

Status:FixedStart date:2013-05-13
Priority:HighDue date:
Assignee:-% Done:

0%

Category:-
Target version:-
Found in version:git Affected Versions:

Description

Git from present day - 13.05.2013

CC              src/plumbing/transcoding.o
src/plumbing/transcoding.c: In function ‘transcoder_get_capabilities’:
src/plumbing/transcoding.c:1320:11: error: ‘AVCodec’ has no member named ‘encode’
make: *** [/opt/tvheadend/build.linux/src/plumbing/transcoding.o] Error 1


any idea?

History

#1 Updated by Thibault HERVIOU about 2 years ago

I have the same problem.
I'm on archlinux and my "avcodec.h" has no member "encode". But, I have the function declaration "encode2"....
pacman -Qi ffmpeg:

Name : ffmpeg
Version : 1:1.2-2
Description : Complete and free Internet live audio and video broadcasting
solution for Linux/Unix
Architecture : x86_64
URL : http://ffmpeg.org/
Licenses : GPL
Groups : None
Provides : None
Depends On : alsa-lib bzip2 fontconfig gsm lame libass libbluray
libmodplug libpulse libtheora libva libvorbis libvpx
opencore-amr openjpeg opus rtmpdump schroedinger sdl
speex v4l-utils x264 xvidcore zlib
Optional Deps : None
Required By : None
Optional For : newznab
Conflicts With : None
Replaces : None
Installed Size : 13236.00 KiB
Packager : Bartłomiej Piotrowski <>
Build Date : Mon 01 Apr 2013 09:33:26 AM CEST

#2 Updated by Adam Sutton about 2 years ago

The transcoding stuff uses libav, which is particularly problematic from an API point of view. I've not had a chance to check the code since John pushed, to make sure version checks are right or that at the very least the code can be disabled at build time.

For now just go back to before John pushed, master will be very quiet for a while as I'm busy (when time permits) working on the DVB rewrite on another branch.

Adam

#3 Updated by Peter Vágner almost 2 years ago

I am on arch as well. I have tryed removing the test for the encoding function keeping encoding2 only on that line and then it compiles fine. However I am still unable to make it transcode by trying to stream via http e.g.
http://localhost:9981/stream/channelid/54?ticket=&lt;valid-ticket-here&gt;&mux=PASS&transcode=1&acodec=AAC&vcodec=H264
Most likelly this is my error and I am unable to figure it out.

#4 Updated by Oliver Schnatz almost 2 years ago

According to Peter Vágner I changed also git source:

Ffmpeg AVCodec does not have function "encode" any more it's called "encode2" now (http://ffmpeg.org/doxygen/trunk/structAVCodec.html
)

So my quick and dirty change is dropping function encode from souce.

diff Naur ../tvheadend.orig/src/plumbing/transcoding.c src/plumbing/transcoding.c
--
../tvheadend.orig/src/plumbing/transcoding.c 2013-05-27 10:15:14.286826726 0200
+
+ src/plumbing/transcoding.c 2013-05-24 10:02:33.105420338 +0200
@ -1317,7 +1317,7 @

while ((p = av_codec_next(p))) {

- if (!p->encode && !p->encode2)
+ if (!p->encode2)
continue;

if (!WORKING_ENCODER(p->id))

Beg your pardon - I'm not familliar wit git to get patch.

My system is debian unstable:
libavcodec-dev:amd64 8:1.2.1-dmo2
libavcodec53:amd64 7:0.10.3-dmo1
libavcodec54:amd64 8:1.2.1-dmo2

Perhaps that might help ....

#5 Updated by John Törnblom almost 2 years ago

A commit has been made that tries to address this issue, please give it a try and report back if it works or not.

#6 Updated by John Törnblom almost 2 years ago

  • Status changed from New to Need feedback

#7 Updated by dhead 666 almost 2 years ago

Compiled fine on Arch Linux x86-64, ffmpeg 1.2.1-1.
Tested also 2 dvb-t streams, seems to work fine.

#8 Updated by dhead 666 almost 2 years ago

Works great also on Arch Linux armv5.

You may want to add ffmpeg to the dependencies list on the wiki.

https://tvheadend.org/projects/tvheadend/wiki/Building

#9 Updated by Andy Brown almost 2 years ago

Hi John,

Looks like mine is hitting a problem with current git master:

Checking support/features
  checking for cc execinfo.h ...                    ok
  checking for cc -mmmx ...                         ok
  checking for cc -msse2 ...                        ok
  checking for cc getloadavg ...                    ok
  checking for cc atomic64 ...                      ok
  checking for py module gzip ...                   ok
  checking for bzip2 ...                            ok
  checking for pkg openssl  ...                     ok
  checking for pkg zlib  ...                        ok
  checking for pkg avahi-client  ...                ok
  checking for pkg libavcodec <=55.0.0 ...          ok
  checking for pkg libavcodec >=52.96.0 ...         ok
  checking for pkg libavutil >=50.43.0 ...          ok
  checking for pkg libavformat <=55.0.0 ...         ok
  checking for pkg libavformat >=53.10.0 ...        ok
  checking for pkg libswscale >=0.13.0 ...          ok
  checking for cc sys/inotify.h ...                 ok
  checking for pkg libcurl  ...                     ok
  fetching dvb-scan files ...                       ok
Package 'libswscale' requires 'libavutil = 52.17.100' but version of libavutil is 51.22.1
Package 'libswscale' requires 'libavutil = 52.17.100' but version of libavutil is 51.22.1

Compiler:
  Using C compiler:                        cc
  Build for arch:                          i686

Binaries:
  Using PYTHON:                            python

Options:
  cwc                                      yes
  v4l                                      yes
  linuxdvb                                 yes
  dvbscan                                  yes
  timeshift                                yes
  trace                                    yes
  imagecache                               yes
  avahi                                    yes
  zlib                                     yes
  libav                                    yes
  inotify                                  yes
  bundle                                   no
  dvbcsa                                   no
  epoll                                    yes
  kqueue                                   no
  execinfo                                 yes
  mmx                                      yes
  sse2                                     yes
  getloadavg                               yes
  atomic64                                 yes
  py_gzip                                  yes
  bin_bzip2                                yes
  ssl                                      yes
  inotify_h                                yes

Packages:
  openssl                                  1.0.1
  zlib                                     1.2.3.4
  avahi-client                             0.6.30
  libavcodec                               53.35.0
  libavutil                                51.22.1
  libavformat                              53.21.1
  libswscale                               2.2.100
  libcurl                                  7.22.0

Installation paths:
  Prefix:                                  /usr
  Binaries:                                ${prefix}/bin
  Libraries:                               ${prefix}/lib
  Data files:                              ${prefix}/share
  Man pages:                               ${datadir}/man

src/plumbing/transcoding.c: In function ‘transcoder_stream_video’:
src/plumbing/transcoding.c:617:9: error: type of formal parameter 4 is incomplete
src/plumbing/transcoding.c:617:9: error: type of formal parameter 7 is incomplete
make: *** [/usr/src/tvheadend-andyb2000/tvheadend-master/tvheadend.dev/build.linux/src/plumbing/transcoding.o] Error 1

#10 Updated by John Törnblom almost 2 years ago

Andy, what distribution are you using?

#11 Updated by Andy Brown almost 2 years ago

Sorry, wasn't watching the thread so didn't notice you'd replied!
It's on a debian-32 bit system I'm on. I'll try and catch you on irc to diagnose/debug.

#12 Updated by Andy Brown almost 2 years ago

  • Priority changed from Normal to High

Still no luck with this. John any potential fix or work-around so we can compile from master please?

#13 Updated by John Törnblom almost 2 years ago

it compile just fine for me.

I installed http://cdimage.debian.org/debian-cd/7.1.0/i386/iso-cd/debian-7.1.0-i386-netinst.iso in Virtualbox

apt-get install pkg-config libssl-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev

you are using libswscale-2.2.100, while the debian version I installed uses libswscale-2.1.0.

I also tested with archbang, who uses libswscale-2.2.100 (but with newer version of the other libav* libs), that also works.
It seems as if you've managed to install a newer version of libswscale ontop of an older version of libav*

in any case, you can still build tvheadend by disabling libav (./configure --disable-libav)

#14 Updated by Andy Brown almost 2 years ago

  • Status changed from Need feedback to Resolved

Thanks John. Yes agreed, I've done a re-install of the deb package and this has resolved the compiler errors.

I'll close this issue now as resolved/user. If the original opener still has issues it may need re-opening/investigating separately.

#15 Updated by Adam Sutton over 1 year ago

  • Status changed from Resolved to Fixed

Also available in: Atom PDF