Comskip for Linux released

  Thread Rating:
  • 6 Votes - 4.17 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
thos Offline
Member
Posts: 54
Joined: Dec 2011
Reputation: 0
Post: #226
Anyone getting different results from Windows to Linux even with same INI file?

Windows public Comskip 0.81.061
Linux Comskip 0.93f.000

The INI files are the same on both machines, but in the debug log you can see some difference in parameters not set in the INI file.

Is there an equivalent version number between Linux/Windows so I know I'm comparing like with like, or is Linux a complete fork?
find quote
shred00 Offline
Junior Member
Posts: 1
Joined: May 2014
Reputation: 0
Post: #227
I gave this a try on Fedora 20 and while it seems to go a fair way, it does eventually segfault.

So before I start digging into why, I have a question...

Is there any option to make this tool dump the EDL in time-offset format rather than frame-offset? Keeping in mind that streams from broadcasters any more are typically mixed framerate by the time they splice their commercials in, so it's not good enough to just assume a constant framerate throughout a file and multiply frame offset by that one framerate, but indeed, a time-offset cut-list has to take into account framerate changes.
find quote
thos Offline
Member
Posts: 54
Joined: Dec 2011
Reputation: 0
Post: #228
(2014-05-11 15:16)thos Wrote:  Anyone getting different results from Windows to Linux even with same INI file?

Windows public Comskip 0.81.061
Linux Comskip 0.93f.000

The INI files are the same on both machines, but in the debug log you can see some difference in parameters not set in the INI file.

Is there an equivalent version number between Linux/Windows so I know I'm comparing like with like, or is Linux a complete fork?

Just to update this, the difference is that the Windows version will correctly drop the commercial at the very start of the recording, but it seems the Linux version processes differently and does not do this. They both capture the same commercials within the show itself. This happens on some shows not all.

Is anyone else having this problem? Any ideas how I can resolve?
find quote
CogLinguist Offline
Junior Member
Posts: 1
Joined: May 2014
Reputation: 0
Post: #229
Can anyone comment as to whether there is support for mp4 files?

If not, would the solution just be to convert the mp4 files to a supported filetype?
find quote
trsqr Offline
Member
Posts: 95
Joined: Jan 2014
Reputation: 4
Post: #230
(2014-05-12 19:37)CogLinguist Wrote:  Can anyone comment as to whether there is support for mp4 files?

If not, would the solution just be to convert the mp4 files to a supported filetype?

I haven't tried since I don't have any mp4 files at hand right now, but Comskip uses ffmpeg to "play" the videos (which XBMC uses also) so I'd guess it does supports mp4 files as well.
find quote
marshell2 Offline
Junior Member
Posts: 1
Joined: May 2014
Reputation: 0
Post: #231
Hi guys,

I am trying to compile comskip on a raspberry pi under raspian wheezy. Due to the requirements some parts of rasbian jessie are also included. I get the following error(s):
Code:
make  all-am
make[1]: Entering directory `/home/pi/comskip-0.93h'
g++ -DHAVE_CONFIG_H -I.     -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
mpeg2dec.cpp: In function ‘bool {anonymous}::video_packet_process({anonymous}::VideoState*, AVPacket*)’:
mpeg2dec.cpp:1184:74: error: ‘avcodec_get_frame_class’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                          ^
mpeg2dec.cpp:1184:112: error: ‘av_opt_ptr’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                                                                ^
mpeg2dec.cpp: In function ‘bool {anonymous}::stream_component_open({anonymous}::VideoState*, int, CS::CommercialSkipper*, {anonymous}::Audio*)’:
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp: In function ‘void {anonymous}::file_close()’:
mpeg2dec.cpp:1627:32: error: cannot convert ‘AVFrame*’ to ‘AVFrame**’ for argument ‘1’ to ‘void avcodec_free_frame(AVFrame**)’
   avcodec_free_frame(is->pFrame);
                                ^
make[1]: *** [comskip-mpeg2dec.o] Fehler 1
make[1]: Leaving directory `/home/pi/comskip-0.93h'
make: *** [all] Fehler 2
Identical results for the 0.93g version. I am using:
g++ 4.8.2
libavcodec 54.35.0
libavformat 54.20.4
libavutil 52.3.0
argtable: 12

The std=gnu++11 seems to be set, so the errors from 0.91 (as discussed on the first page of this discussion) shouldn't apply. Any ideas how to solve these issues?

Best regards,

Marshell
find quote
cbxbiker61 Offline
Senior Member
Posts: 179
Joined: Nov 2010
Reputation: 2
Post: #232
(2014-05-12 11:19)thos Wrote:  
(2014-05-11 15:16)thos Wrote:  Anyone getting different results from Windows to Linux even with same INI file?

Windows public Comskip 0.81.061
Linux Comskip 0.93f.000

The INI files are the same on both machines, but in the debug log you can see some difference in parameters not set in the INI file.

Is there an equivalent version number between Linux/Windows so I know I'm comparing like with like, or is Linux a complete fork?

Just to update this, the difference is that the Windows version will correctly drop the commercial at the very start of the recording, but it seems the Linux version processes differently and does not do this. They both capture the same commercials within the show itself. This happens on some shows not all.

Is anyone else having this problem? Any ideas how I can resolve?

The very first Linux version was forked from the windows source code.

I (or anyone else with the required skill) probably should take a closer look at what's happening to cause the Linux version to "miss" the first commercial.
find quote
thos Offline
Member
Posts: 54
Joined: Dec 2011
Reputation: 0
Post: #233
I've got back to back logs from the windows and linux outputs of same file if its any use to you.

As I said, it does work on some starting commercials, so I can get some logs of it working also if that helps.

Tom
find quote
vin1233321 Offline
Junior Member
Posts: 4
Joined: Aug 2009
Reputation: 0
Post: #234
(2014-05-13 22:21)marshell2 Wrote:  Hi guys,

I am trying to compile comskip on a raspberry pi under raspian wheezy. Due to the requirements some parts of rasbian jessie are also included. I get the following error(s):
Code:
make  all-am
make[1]: Entering directory `/home/pi/comskip-0.93h'
g++ -DHAVE_CONFIG_H -I.     -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
mpeg2dec.cpp: In function ‘bool {anonymous}::video_packet_process({anonymous}::VideoState*, AVPacket*)’:
mpeg2dec.cpp:1184:74: error: ‘avcodec_get_frame_class’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                          ^
mpeg2dec.cpp:1184:112: error: ‘av_opt_ptr’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                                                                ^
mpeg2dec.cpp: In function ‘bool {anonymous}::stream_component_open({anonymous}::VideoState*, int, CS::CommercialSkipper*, {anonymous}::Audio*)’:
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp: In function ‘void {anonymous}::file_close()’:
mpeg2dec.cpp:1627:32: error: cannot convert ‘AVFrame*’ to ‘AVFrame**’ for argument ‘1’ to ‘void avcodec_free_frame(AVFrame**)’
   avcodec_free_frame(is->pFrame);
                                ^
make[1]: *** [comskip-mpeg2dec.o] Fehler 1
make[1]: Leaving directory `/home/pi/comskip-0.93h'
make: *** [all] Fehler 2
Identical results for the 0.93g version. I am using:
g++ 4.8.2
libavcodec 54.35.0
libavformat 54.20.4
libavutil 52.3.0
argtable: 12

The std=gnu++11 seems to be set, so the errors from 0.91 (as discussed on the first page of this discussion) shouldn't apply. Any ideas how to solve these issues?

Best regards,

Marshell
Super easy fix.

Code:
- avcodec_free_frame(is->pFrame);
+ avcodec_free_frame(&is->pFrame);

Builds otherwise for me with that change.
find quote
snickers2k Offline
Junior Member
Posts: 13
Joined: Jan 2014
Reputation: 0
Post: #235
(2014-06-08 20:40)vin1233321 Wrote:  
(2014-05-13 22:21)marshell2 Wrote:  Hi guys,

I am trying to compile comskip on a raspberry pi under raspian wheezy. Due to the requirements some parts of rasbian jessie are also included. I get the following error(s):
Code:
make  all-am
make[1]: Entering directory `/home/pi/comskip-0.93h'
g++ -DHAVE_CONFIG_H -I.     -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
mpeg2dec.cpp: In function ‘bool {anonymous}::video_packet_process({anonymous}::VideoState*, AVPacket*)’:
mpeg2dec.cpp:1184:74: error: ‘avcodec_get_frame_class’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                          ^
mpeg2dec.cpp:1184:112: error: ‘av_opt_ptr’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                                                                ^
mpeg2dec.cpp: In function ‘bool {anonymous}::stream_component_open({anonymous}::VideoState*, int, CS::CommercialSkipper*, {anonymous}::Audio*)’:
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp: In function ‘void {anonymous}::file_close()’:
mpeg2dec.cpp:1627:32: error: cannot convert ‘AVFrame*’ to ‘AVFrame**’ for argument ‘1’ to ‘void avcodec_free_frame(AVFrame**)’
   avcodec_free_frame(is->pFrame);
                                ^
make[1]: *** [comskip-mpeg2dec.o] Fehler 1
make[1]: Leaving directory `/home/pi/comskip-0.93h'
make: *** [all] Fehler 2
Identical results for the 0.93g version. I am using:
g++ 4.8.2
libavcodec 54.35.0
libavformat 54.20.4
libavutil 52.3.0
argtable: 12

The std=gnu++11 seems to be set, so the errors from 0.91 (as discussed on the first page of this discussion) shouldn't apply. Any ideas how to solve these issues?

Best regards,

Marshell
Super easy fix.

Code:
- avcodec_free_frame(is->pFrame);
+ avcodec_free_frame(&is->pFrame);

Builds otherwise for me with that change.

Same error here. But i don't know where to make these changes. Could you explain? thx
find quote
macintoshd Offline
Junior Member
Posts: 1
Joined: Jul 2014
Reputation: 0
Post: #236
Anybody gotten this to compile in Mac OS X 10.9 with Xcode 5.1.1?

ffmpeg and arguable packages can be obtained from Homebrew. I believe comskip could also be added to Homebrew if we can get it to compile.

To start with <features.h> is not available in OS X.

So it should be checked for in CsOptions.h (right above the #ifdef __GNUC__)

Code:
#if !defined(__APPLE__)
#endif

Once that is set, I still get compilation errors:

Quote:/Applications/Xcode.app/Contents/Developer/usr/bin/make all-am
g++ -DHAVE_CONFIG_H -I. -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/argtable/2.13/include -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
In file included from mpeg2dec.cpp:55:
./inttypes.h:10:23: error: expected ';' after top level declarator
typedef signed __int64 int64_t;
^
;
./inttypes.h:10:24: warning: declaration does not declare anything [-Wmissing-declarations]
typedef signed __int64 int64_t;
^~~~~~~
./inttypes.h:15:18: error: typedef redefinition with different types ('unsigned int' vs 'int')
typedef unsigned __int64 uint64_t;
^
./inttypes.h:10:16: note: previous definition is here
typedef signed __int64 int64_t;
^
./inttypes.h:15:25: error: expected ';' after top level declarator
typedef unsigned __int64 uint64_t;
^
;
./inttypes.h:15:26: warning: declaration does not declare anything [-Wmissing-declarations]
typedef unsigned __int64 uint64_t;
^~~~~~~~
mpeg2dec.cpp:1140:6: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference]
*(int *)0 = 0;
^~~~~~~~~
mpeg2dec.cpp:1140:6: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
3 warnings and 3 errors generated.
make[1]: *** [comskip-mpeg2dec.o] Error 1
make: *** [all] Error 2

If I comment out those typedefs I still get a bunch of errors:

Quote:/Applications/Xcode.app/Contents/Developer/usr/bin/make all-am
g++ -DHAVE_CONFIG_H -I. -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/argtable/2.13/include -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
mpeg2dec.cpp:1140:6: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference]
*(int *)0 = 0;
^~~~~~~~~
mpeg2dec.cpp:1140:6: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
1 warning generated.
mv -f .deps/comskip-mpeg2dec.Tpo .deps/comskip-mpeg2dec.Po
g++ -DHAVE_CONFIG_H -I. -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/ffmpeg/2.2.4/include -I/usr/local/Cellar/argtable/2.13/include -g -O2 -std=gnu++11 -MT comskip-comskip.o -MD -MP -MF .deps/comskip-comskip.Tpo -c -o comskip-comskip.o `test -f 'comskip.cpp' || echo './'`comskip.cpp
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:38:11: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return (std::abs(f[yOff + xMinus] - f[yOff + x] ) >= _threshold)
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:39:8: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
|| (std::abs(f[yOff + xPlus] - f[yOff + x] ) >= _threshold);
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:64:11: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return (std::abs(f[yMinus * width + x] - f[y * width + x]) >= _threshold)
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:65:8: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
|| (std::abs(f[yPlus * width + x] - f[y * width + x]) >= _threshold);
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:91:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs(f[yOff + xMinus] - f[yOff + xPlus] ) >= _threshold;
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:115:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs(f[yMinus * width + x] - f[yPlus * width + x]) >= _threshold;
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:145:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs( (f[yOff + xMinusMinus]
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:180:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs((f[yMinusMinus * width + x]
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:212:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs((f[yMinus * width + xMinus]
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
In file included from comskip.cpp:43:
In file included from ./comskip.h:5:
./CsEdges.h:245:10: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
return std::abs(f[yMinus * width + xMinus]
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
comskip.cpp:1046:24: warning: comparison of constant 2 with expression of type 'bool' is always false [-Wtautological-constant-out-of-range-compare]
if ( cut_on_ar_change == 2 )
~~~~~~~~~~~~~~~~ ^ ~
comskip.cpp:1067:24: warning: comparison of constant 2 with expression of type 'bool' is always false [-Wtautological-constant-out-of-range-compare]
|| cut_on_ar_change >= 2 )
~~~~~~~~~~~~~~~~ ^ ~
comskip.cpp:3932:38: warning: comparison of constant 2 with expression of type 'bool' is always false [-Wtautological-constant-out-of-range-compare]
if ( cut_on_ar_change > 2
~~~~~~~~~~~~~~~~ ^ ~
comskip.cpp:5607:26: error: no member named 'getcwd' in the global namespace
mpgFn = std::string(::getcwd(cwd, sizeof(cwd))) + DIRSEPSTR + _mpegFilename;
~~^
comskip.cpp:5638:21: error: use of undeclared identifier 'getcwd'
bn = std::string(getcwd(cwd, sizeof(cwd))) + DIRSEPSTR + _basename;
^
comskip.cpp:7110:22: error: use of undeclared identifier '_read'; did you mean '__sFILE::_read'?
int i(_read(inf, Buf, (unsigned int)len));
^~~~~
__sFILE::_read
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdio.h:132:8: note: '__sFILE::_read' declared here
int (*_read) (void *, char *, int);
^
comskip.cpp:7110:22: error: invalid use of non-static data member '_read'
int i(_read(inf, Buf, (unsigned int)len));
^~~~~
comskip.cpp:7131:32: error: use of undeclared identifier 'write'
(void)write(outf, Buf, j);
^
comskip.cpp:7133:32: error: use of undeclared identifier 'write'
(void)write(outf, MPEG2SysHdr, sizeof(MPEG2SysHdr));
^
comskip.cpp:7137:21: error: use of undeclared identifier 'write'
if ( write(outf, Buf+j, i-j) <= 0 )
^
comskip.cpp:7164:2: error: use of undeclared identifier '_close'
_close(outf);
^
comskip.cpp:7845:15: warning: assigning field to itself [-Wself-assign-field]
_frameCount = _frameCount;
^
comskip.cpp:7857:9: error: no member named 'abs' in namespace 'std'; did you mean simply 'abs'?
if ( std::abs(csBrightness - cs.brightness) < 2 )
^~~~~~~~
abs
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdlib.h:129:6: note: 'abs' declared here
int abs(int) __pure2;
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
4 warnings and 20 errors generated.
make[1]: *** [comskip-comskip.o] Error 1
make: *** [all] Error 2
find quote
snickers2k Offline
Junior Member
Posts: 13
Joined: Jan 2014
Reputation: 0
Post: #237
(2014-06-30 22:05)snickers2k Wrote:  
(2014-06-08 20:40)vin1233321 Wrote:  
(2014-05-13 22:21)marshell2 Wrote:  Hi guys,

I am trying to compile comskip on a raspberry pi under raspian wheezy. Due to the requirements some parts of rasbian jessie are also included. I get the following error(s):
Code:
make  all-am
make[1]: Entering directory `/home/pi/comskip-0.93h'
g++ -DHAVE_CONFIG_H -I.     -g -O2 -std=gnu++11 -MT comskip-mpeg2dec.o -MD -MP -MF .deps/comskip-mpeg2dec.Tpo -c -o comskip-mpeg2dec.o `test -f 'mpeg2dec.cpp' || echo './'`mpeg2dec.cpp
mpeg2dec.cpp: In function ‘bool {anonymous}::video_packet_process({anonymous}::VideoState*, AVPacket*)’:
mpeg2dec.cpp:1184:74: error: ‘avcodec_get_frame_class’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                          ^
mpeg2dec.cpp:1184:112: error: ‘av_opt_ptr’ was not declared in this scope
   best_effort_timestamp = *(int64_t *)av_opt_ptr(avcodec_get_frame_class(), is->pFrame, "best_effort_timestamp");
                                                                                                                ^
mpeg2dec.cpp: In function ‘bool {anonymous}::stream_component_open({anonymous}::VideoState*, int, CS::CommercialSkipper*, {anonymous}::Audio*)’:
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1350:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
    codecCtx->lowres = pcs->getLowRes();
              ^
mpeg2dec.cpp:1419:14: warning: ‘AVCodecContext::lowres’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:2718) [-Wdeprecated-declarations]
mpeg2dec.cpp: In function ‘void {anonymous}::file_close()’:
mpeg2dec.cpp:1627:32: error: cannot convert ‘AVFrame*’ to ‘AVFrame**’ for argument ‘1’ to ‘void avcodec_free_frame(AVFrame**)’
   avcodec_free_frame(is->pFrame);
                                ^
make[1]: *** [comskip-mpeg2dec.o] Fehler 1
make[1]: Leaving directory `/home/pi/comskip-0.93h'
make: *** [all] Fehler 2
Identical results for the 0.93g version. I am using:
g++ 4.8.2
libavcodec 54.35.0
libavformat 54.20.4
libavutil 52.3.0
argtable: 12

The std=gnu++11 seems to be set, so the errors from 0.91 (as discussed on the first page of this discussion) shouldn't apply. Any ideas how to solve these issues?

Best regards,

Marshell
Super easy fix.

Code:
- avcodec_free_frame(is->pFrame);
+ avcodec_free_frame(&is->pFrame);

Builds otherwise for me with that change.

Same error here. But i don't know where to make these changes. Could you explain? thx

Ok. i finally found the file where to make these changes. Its "mpeg2dec.cpp". If anyone stumpled on this too.
Now it builds correctly.


But when i use "comskip /path/to/file.mkv" , it does not work. comskip is checking the file. but the file has still commercials. Sad does someone know what to do?
also can somebody please write a short tutorial on how to run Comskip with TVHeadend automatically as a post recording script?
(This post was last modified: 2014-07-06 16:16 by snickers2k.)
find quote
robo989 Offline
Senior Member
Posts: 270
Joined: Apr 2010
Reputation: 6
Post: #238
^ comskip doesn't "remove" commericals.
It creates metadata so that when it is played back the commericial is skipped.
find quote
snickers2k Offline
Junior Member
Posts: 13
Joined: Jan 2014
Reputation: 0
Post: #239
oh, thx. You're right. So it DOES work. I get the metadata files.
so i tried it with XBMC. and the commercials are skipped mostly. but this results in a very weird behavior of XBMC at manually skipping forward or backward.
So to really cut out the commercials, for making it work with any player and for saving disk-space - there is an Windows app "Comclean". But i can't find a Linux alternative. Anyone having an idea?
find quote
Post Reply