diff --git a/configure.ac b/configure.ac index a3b6b0805..2ccf182b7 100644 --- a/configure.ac +++ b/configure.ac @@ -234,7 +234,7 @@ fi fi # hack to define a short filename also for out-of-tree build -if test `dirname $0` = `pwd`; then +if test `dirname $0` = `pwd` || test "$0" = ./configure; then HWLIB_CFLAGS="$HWLIB_CFLAGS "'-D__file__=__FILE__' HWLIB_CFLAGS="$HWLIB_CFLAGS "'-D__path_file__=__FILE__' else diff --git a/src/driver/record.cpp b/src/driver/record.cpp index 8ee8b3b7e..64b740359 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -65,6 +65,37 @@ #include #include +extern "C" { +#include +} + +class CStreamRec : public CRecordInstance, OpenThreads::Thread +{ + private: + AVFormatContext *ifcx; + AVFormatContext *ofcx; + AVBitStreamFilterContext *bsfc; + bool stopped; + bool interrupt; + time_t time_started; + int stream_index; + + void GetPids(CZapitChannel * channel); + void FillMovieInfo(CZapitChannel * channel, APIDList & apid_list); + bool Start(); + + void Close(); + bool Open(CZapitChannel * channel); + void run(); + void WriteHeader(uint32_t duration); + public: + CStreamRec(const CTimerd::RecordingInfo * const eventinfo, std::string &dir, bool timeshift = false, bool stream_vtxt_pid = false, bool stream_pmt_pid = false, bool stream_subtitle_pids = false); + ~CStreamRec(); + record_error_msg_t Record(); + bool Stop(bool remove_event = true); + static int Interrupt(void * data); +}; + /* TODO: * nextRecording / pending recordings - needs testing * check/fix askUserOnTimerConflict gui/timerlist.cpp -> getOverlappingTimers lib/timerdclient/timerdclient.cpp @@ -2250,7 +2281,7 @@ void CStreamRec::run() continue; AVCodecContext *codec = ifcx->streams[pkt.stream_index]->codec; - if (bsfc && codec->codec_id == CODEC_ID_H264) { + if (bsfc && codec->codec_id == AV_CODEC_ID_H264) { AVPacket newpkt = pkt; if (av_bitstream_filter_filter(bsfc, codec, NULL, &newpkt.data, &newpkt.size, pkt.data, pkt.size, pkt.flags & AV_PKT_FLAG_KEY) >= 0) { diff --git a/src/driver/record.h b/src/driver/record.h index bbc93ce1f..4e02a651d 100644 --- a/src/driver/record.h +++ b/src/driver/record.h @@ -42,9 +42,11 @@ #include #include +#if 0 extern "C" { #include } +#endif #define REC_MAX_APIDS 10 #define FILENAMEBUFFERSIZE 1024 @@ -244,6 +246,7 @@ class CRecordManager : public CMenuTarget /*, public CChangeObserver*/ #endif }; +#if 0 class CStreamRec : public CRecordInstance, OpenThreads::Thread { private: @@ -270,5 +273,6 @@ class CStreamRec : public CRecordInstance, OpenThreads::Thread bool Stop(bool remove_event = true); static int Interrupt(void * data); }; +#endif #endif diff --git a/src/driver/streamts.cpp b/src/driver/streamts.cpp index e18a7bcca..8dd72b9e6 100644 --- a/src/driver/streamts.cpp +++ b/src/driver/streamts.cpp @@ -896,7 +896,7 @@ void CStreamStream::run() continue; AVCodecContext *codec = ifcx->streams[pkt.stream_index]->codec; - if (bsfc && codec->codec_id == CODEC_ID_H264 ) { + if (bsfc && codec->codec_id == AV_CODEC_ID_H264 ) { AVPacket newpkt = pkt; if (av_bitstream_filter_filter(bsfc, codec, NULL, &newpkt.data, &newpkt.size, pkt.data, pkt.size, pkt.flags & AV_PKT_FLAG_KEY) >= 0) { diff --git a/src/system/helpers.cpp b/src/system/helpers.cpp index 109c264d5..380f2f844 100644 --- a/src/system/helpers.cpp +++ b/src/system/helpers.cpp @@ -45,6 +45,7 @@ #include #include "debug.h" #include +#include #include #include using namespace std; @@ -1253,6 +1254,7 @@ std::vector split(const std::string &s, char delim) return vec; } +#if __cplusplus <= 201103L std::string to_string(int i) { std::stringstream s; @@ -1294,6 +1296,7 @@ std::string to_string(unsigned long long i) s << i; return s.str(); } +#endif /** * C++ version 0.4 std::string style "itoa": diff --git a/src/system/helpers.h b/src/system/helpers.h index 0508aeb26..a18f495b0 100644 --- a/src/system/helpers.h +++ b/src/system/helpers.h @@ -119,12 +119,17 @@ class CFileHelpers uint32_t GetWidth4FB_HW_ACC(const uint32_t _x, const uint32_t _w, const bool max=true); +#if __cplusplus <= 201103L std::string to_string(int); std::string to_string(unsigned int); std::string to_string(long); std::string to_string(unsigned long); std::string to_string(long long); std::string to_string(unsigned long long); +#else +/* hack... */ +#define to_string(x) std::to_string(x) +#endif std::string itoa(int value, int base);