mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-28 10:08:24 +00:00
47f3eeeb85
decoder.cpp:175:23: error: use of undeclared identifier 'AV_CODEC_ID_MPEG2VIDEO_XVMC'; did you mean 'AV_CODEC_ID_MPEG2VIDEO'? video_codecid=AV_CODEC_ID_MPEG2VIDEO_XVMC; ^~~~~~~~~~~~~~~~~~~~~~~~~~~ AV_CODEC_ID_MPEG2VIDEO /usr/local/include/libavcodec/avcodec.h:220:5: note: 'AV_CODEC_ID_MPEG2VIDEO' declared here AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding ^ decoder.cpp:179:43: error: use of undeclared identifier 'AV_CODEC_ID_MPEG2VIDEO_XVMC'; did you mean 'AV_CODEC_ID_MPEG2VIDEO'? if ((!video_codec) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ AV_CODEC_ID_MPEG2VIDEO /usr/local/include/libavcodec/avcodec.h:220:5: note: 'AV_CODEC_ID_MPEG2VIDEO' declared here AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding ^ decoder.cpp:191:45: error: use of undeclared identifier 'CODEC_CAP_TRUNCATED' if (video_codec->capabilities & CODEC_CAP_TRUNCATED) ^ decoder.cpp:192:39: error: use of undeclared identifier 'CODEC_FLAG_TRUNCATED' video_context->flags|=CODEC_FLAG_TRUNCATED; // we do not send complete frames ^ decoder.cpp:194:36: error: use of undeclared identifier 'CODEC_FLAG2_FAST' video_context->flags2|=CODEC_FLAG2_FAST; // really? ^ decoder.cpp:201:40: error: use of undeclared identifier 'CODEC_FLAG2_CHUNKS' video_context->flags2|=CODEC_FLAG2_CHUNKS; // needed for H264! ^ decoder.cpp:214:46: error: use of undeclared identifier 'AV_CODEC_ID_MPEG2VIDEO_XVMC'; did you mean 'AV_CODEC_ID_MPEG2VIDEO'? if ((ret < 0) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ AV_CODEC_ID_MPEG2VIDEO /usr/local/include/libavcodec/avcodec.h:220:5: note: 'AV_CODEC_ID_MPEG2VIDEO' declared here AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding ^ decoder.cpp:224:43: error: no member named 'codec_name' in 'AVCodecContext'; did you mean 'coded_frame'? memset(video_context->codec_name,0,sizeof(video_context->codec_name)); ^~~~~~~~~~ coded_frame /usr/local/include/libavcodec/avcodec.h:2760:35: note: 'coded_frame' declared here attribute_deprecated AVFrame *coded_frame; ^ decoder.cpp:224:78: error: no member named 'codec_name' in 'AVCodecContext' memset(video_context->codec_name,0,sizeof(video_context->codec_name)); ~~~~~~~~~~~~~ ^ decoder.cpp:244:22: error: use of undeclared identifier 'AV_CODEC_ID_MPEG2VIDEO_XVMC'; did you mean 'AV_CODEC_ID_MPEG2VIDEO'? case AV_CODEC_ID_MPEG2VIDEO_XVMC: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ AV_CODEC_ID_MPEG2VIDEO /usr/local/include/libavcodec/avcodec.h:220:5: note: 'AV_CODEC_ID_MPEG2VIDEO' declared here AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding ^ decoder.cpp:247:22: error: duplicate case value 'AV_CODEC_ID_MPEG2VIDEO' case AV_CODEC_ID_MPEG2VIDEO: ^ decoder.cpp:244:22: note: previous case defined here case AV_CODEC_ID_MPEG2VIDEO_XVMC: ^ decoder.cpp:305:14: error: use of undeclared identifier 'AV_CODEC_ID_MPEG2VIDEO_XVMC'; did you mean 'AV_CODEC_ID_MPEG2VIDEO'? case AV_CODEC_ID_MPEG2VIDEO_XVMC: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ AV_CODEC_ID_MPEG2VIDEO /usr/local/include/libavcodec/avcodec.h:220:5: note: 'AV_CODEC_ID_MPEG2VIDEO' declared here AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding ^ decoder.cpp:308:14: error: duplicate case value 'AV_CODEC_ID_MPEG2VIDEO' case AV_CODEC_ID_MPEG2VIDEO: ^ decoder.cpp:305:14: note: previous case defined here case AV_CODEC_ID_MPEG2VIDEO_XVMC: ^ PR: 227726 Reported by: antoine (via exp-run)
193 lines
6.5 KiB
C++
193 lines
6.5 KiB
C++
--- command/decoder.cpp.orig 2012-04-02 19:41:15 UTC
|
|
+++ command/decoder.cpp
|
|
@@ -6,11 +6,17 @@
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
+#ifndef __FreeBSD__
|
|
#include <sched.h>
|
|
+#else
|
|
+#include <sys/types.h>
|
|
+#include <sys/sysctl.h>
|
|
+#endif
|
|
#include <errno.h>
|
|
#include <sys/types.h>
|
|
#include <string.h>
|
|
#include <cstdlib>
|
|
+#include <stdio.h>
|
|
|
|
#include "decoder.h"
|
|
|
|
@@ -113,6 +119,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
|
|
noticeERRVID=false;
|
|
|
|
+#ifndef __FreeBSD__
|
|
cpu_set_t cpumask;
|
|
uint len = sizeof(cpumask);
|
|
int cpucount=1;
|
|
@@ -120,6 +127,12 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
{
|
|
cpucount=CPU_COUNT(&cpumask);
|
|
}
|
|
+#else
|
|
+ int cpucount;
|
|
+ size_t cpus_size = sizeof(cpucount);
|
|
+ if (sysctlbyname("hw.ncpu", &cpucount, &cpus_size, NULL, 0) == -1)
|
|
+ cpucount = 1;
|
|
+#endif
|
|
|
|
if (Threads==-1)
|
|
{
|
|
@@ -151,41 +164,47 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
}
|
|
|
|
video_codec=NULL;
|
|
- CodecID video_codecid;
|
|
+ AVCodecID video_codecid;
|
|
|
|
if (useH264)
|
|
{
|
|
- video_codecid=CODEC_ID_H264;
|
|
+ video_codecid=AV_CODEC_ID_H264;
|
|
}
|
|
else
|
|
{
|
|
- video_codecid=CODEC_ID_MPEG2VIDEO_XVMC;
|
|
+#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC
|
|
+ video_codecid=AV_CODEC_ID_MPEG2VIDEO_XVMC;
|
|
+#else
|
|
+ video_codecid=AV_CODEC_ID_MPEG2VIDEO;
|
|
+#endif
|
|
}
|
|
|
|
video_codec = avcodec_find_decoder(video_codecid);
|
|
- if ((!video_codec) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC))
|
|
+#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC
|
|
+ if ((!video_codec) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC))
|
|
{
|
|
// fallback to MPEG2VIDEO
|
|
- video_codecid=CODEC_ID_MPEG2VIDEO;
|
|
+ video_codecid=AV_CODEC_ID_MPEG2VIDEO;
|
|
video_codec=avcodec_find_decoder(video_codecid);
|
|
}
|
|
+#endif
|
|
|
|
if (video_codec)
|
|
{
|
|
- video_context = avcodec_alloc_context();
|
|
+ video_context = avcodec_alloc_context3(NULL);
|
|
if (video_context)
|
|
{
|
|
- if (video_codec->capabilities & CODEC_CAP_TRUNCATED)
|
|
- video_context->flags|=CODEC_FLAG_TRUNCATED; // we do not send complete frames
|
|
+ if (video_codec->capabilities & AV_CODEC_CAP_TRUNCATED)
|
|
+ video_context->flags|=AV_CODEC_FLAG_TRUNCATED; // we do not send complete frames
|
|
|
|
- video_context->flags2|=CODEC_FLAG2_FAST; // really?
|
|
+ video_context->flags2|=AV_CODEC_FLAG2_FAST; // really?
|
|
video_context->skip_idct=AVDISCARD_ALL;
|
|
|
|
av_log_set_level(AV_LOG_FATAL); // silence decoder output
|
|
|
|
- if (video_codecid==CODEC_ID_H264)
|
|
+ if (video_codecid==AV_CODEC_ID_H264)
|
|
{
|
|
- video_context->flags2|=CODEC_FLAG2_CHUNKS; // needed for H264!
|
|
+ video_context->flags2|=AV_CODEC_FLAG2_CHUNKS; // needed for H264!
|
|
}
|
|
else
|
|
{
|
|
@@ -198,17 +217,23 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
#else
|
|
int ret=avcodec_open(video_context, video_codec);
|
|
#endif
|
|
- if ((ret < 0) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC))
|
|
+#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC
|
|
+ if ((ret < 0) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC))
|
|
+#else
|
|
+ if (ret < 0)
|
|
+#endif
|
|
{
|
|
// fallback to MPEG2VIDEO
|
|
- video_codecid=CODEC_ID_MPEG2VIDEO;
|
|
+ video_codecid=AV_CODEC_ID_MPEG2VIDEO;
|
|
video_codec=avcodec_find_decoder(video_codecid);
|
|
if (video_codec)
|
|
{
|
|
video_context->codec_type=AVMEDIA_TYPE_UNKNOWN;
|
|
- video_context->codec_id=CODEC_ID_NONE;
|
|
+ video_context->codec_id=AV_CODEC_ID_NONE;
|
|
video_context->codec_tag=0;
|
|
+#if LIBAVCODEC_VERSION_INT < ((58<<16)+(0<<8)+0)
|
|
memset(video_context->codec_name,0,sizeof(video_context->codec_name));
|
|
+#endif
|
|
#if LIBAVCODEC_VERSION_INT >= ((53<<16)+(5<<8)+0)
|
|
video_context->thread_count=threadcount;
|
|
ret=avcodec_open2(video_context, video_codec, NULL);
|
|
@@ -225,13 +250,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
{
|
|
switch (video_codecid)
|
|
{
|
|
- case CODEC_ID_H264:
|
|
+ case AV_CODEC_ID_H264:
|
|
esyslog("could not open codec for H264");
|
|
break;
|
|
- case CODEC_ID_MPEG2VIDEO_XVMC:
|
|
+#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC
|
|
+ case AV_CODEC_ID_MPEG2VIDEO_XVMC:
|
|
esyslog("could not open codec MPEG2 (XVMC)");
|
|
break;
|
|
- case CODEC_ID_MPEG2VIDEO:
|
|
+#endif
|
|
+ case AV_CODEC_ID_MPEG2VIDEO:
|
|
esyslog("could not open codec MPEG2");
|
|
break;
|
|
default:
|
|
@@ -256,7 +283,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
}
|
|
#endif
|
|
|
|
- video_frame = avcodec_alloc_frame();
|
|
+ video_frame = av_frame_alloc();
|
|
if (!video_frame)
|
|
{
|
|
esyslog("could not allocate frame");
|
|
@@ -286,13 +313,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa
|
|
{
|
|
switch (video_codecid)
|
|
{
|
|
- case CODEC_ID_H264:
|
|
+ case AV_CODEC_ID_H264:
|
|
esyslog("codec for H264 not found");
|
|
break;
|
|
- case CODEC_ID_MPEG2VIDEO_XVMC:
|
|
+#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC
|
|
+ case AV_CODEC_ID_MPEG2VIDEO_XVMC:
|
|
esyslog("codec for MPEG2 (XVMC) not found");
|
|
break;
|
|
- case CODEC_ID_MPEG2VIDEO:
|
|
+#endif
|
|
+ case AV_CODEC_ID_MPEG2VIDEO:
|
|
esyslog("codec for MPEG2 not found");
|
|
break;
|
|
default:
|
|
@@ -321,7 +350,7 @@ bool cMarkAdDecoder::Clear()
|
|
{
|
|
avcodec_flush_buffers(video_context);
|
|
AVCodecContext *dest;
|
|
- dest=avcodec_alloc_context();
|
|
+ dest=avcodec_alloc_context3(NULL);
|
|
if (dest)
|
|
{
|
|
if (avcodec_copy_context(dest,video_context)!=0) ret=false;
|
|
@@ -384,7 +413,7 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maCont
|
|
if (!video_frame) return false;
|
|
maContext->Video.Data.Valid=false;
|
|
|
|
- if ((video_context->codec_id==CODEC_ID_H264) && (!video_context->skip_frame))
|
|
+ if ((video_context->codec_id==AV_CODEC_ID_H264) && (!video_context->skip_frame))
|
|
{
|
|
// with H264 we cannot set skip_frame just to NONKEY, is depends on Interlaced...
|
|
if (maContext->Video.Info.Height)
|