[FFmpeg-cvslog] avcodec/vdpau: Re-factor pre-hwaccel helper functions into separate header

Philip Langdale git at videolan.org
Tue May 26 04:50:53 CEST 2015


ffmpeg | branch: master | Philip Langdale <philipl at overt.org> | Mon May 25 09:42:14 2015 -0700| [9ae766d1c6983e6deec4a7bf783d1ef09ca5f3ad] | committer: Philip Langdale

avcodec/vdpau: Re-factor pre-hwaccel helper functions into separate header

h264.h and hevc.h are mutually exclusive due to defining some of the same
names. As such, we need to avoid forcing h264.h to be included if we want
hevc decode acceleration to be possible.

However, some of the pre-hwaccel helper functions need h264.h. To avoid
messy collisions, let's move the declaration of all those helpers to
a separate header which we will exclude for the hevc support (which will
be hwaccel-only).

Signed-off-by: Philip Langdale <philipl at overt.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9ae766d1c6983e6deec4a7bf783d1ef09ca5f3ad
---

 libavcodec/h263dec.c        |    2 +-
 libavcodec/h264.c           |    2 +-
 libavcodec/h264_picture.c   |    2 +-
 libavcodec/mpeg12dec.c      |    2 +-
 libavcodec/vc1dec.c         |    2 +-
 libavcodec/vdpau.c          |    1 +
 libavcodec/vdpau_compat.h   |   48 +++++++++++++++++++++++++++++++++++++++++++
 libavcodec/vdpau_internal.h |   19 -----------------
 8 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index 89362d2..d14e232 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -40,7 +40,7 @@
 #include "mpegvideo.h"
 #include "msmpeg4.h"
 #include "qpeldsp.h"
-#include "vdpau_internal.h"
+#include "vdpau_compat.h"
 #include "thread.h"
 
 static enum AVPixelFormat h263_get_format(AVCodecContext *avctx)
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 1ba0e95..9a00214 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -49,7 +49,7 @@
 #include "rectangle.h"
 #include "svq3.h"
 #include "thread.h"
-#include "vdpau_internal.h"
+#include "vdpau_compat.h"
 
 const uint16_t ff_h264_mb_sizes[4] = { 256, 384, 512, 768 };
 
diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index 14d8f19..bf1471d 100644
--- a/libavcodec/h264_picture.c
+++ b/libavcodec/h264_picture.c
@@ -42,7 +42,7 @@
 #include "mpegutils.h"
 #include "rectangle.h"
 #include "thread.h"
-#include "vdpau_internal.h"
+#include "vdpau_compat.h"
 
 void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
 {
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index f180c3d..f321abc 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -45,7 +45,7 @@
 #include "mpegvideo.h"
 #include "thread.h"
 #include "version.h"
-#include "vdpau_internal.h"
+#include "vdpau_compat.h"
 #include "xvmc_internal.h"
 
 typedef struct Mpeg1Context {
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index eab6792..0db7d02 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -35,7 +35,7 @@
 #include "msmpeg4data.h"
 #include "vc1.h"
 #include "vc1data.h"
-#include "vdpau_internal.h"
+#include "vdpau_compat.h"
 #include "libavutil/avassert.h"
 
 
diff --git a/libavcodec/vdpau.c b/libavcodec/vdpau.c
index 0c38935..62d9960 100644
--- a/libavcodec/vdpau.c
+++ b/libavcodec/vdpau.c
@@ -32,6 +32,7 @@
 #include <assert.h>
 
 #include "vdpau.h"
+#include "vdpau_compat.h"
 #include "vdpau_internal.h"
 
 /**
diff --git a/libavcodec/vdpau_compat.h b/libavcodec/vdpau_compat.h
new file mode 100644
index 0000000..6b4b086
--- /dev/null
+++ b/libavcodec/vdpau_compat.h
@@ -0,0 +1,48 @@
+/*
+ * Video Decode and Presentation API for UNIX (VDPAU) is used for
+ * HW decode acceleration for MPEG-1/2, H.264 and VC-1.
+ *
+ * Copyright (C) 2008 NVIDIA
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_VDPAU_COMPAT_H
+#define AVCODEC_VDPAU_COMPAT_H
+
+#include <stdint.h>
+
+#include "h264.h"
+#include "mpeg4video.h"
+
+void ff_vdpau_add_data_chunk(uint8_t *data, const uint8_t *buf,
+                             int buf_size);
+
+void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
+                                    int buf_size, int slice_count);
+
+void ff_vdpau_h264_picture_start(H264Context *h);
+void ff_vdpau_h264_set_reference_frames(H264Context *h);
+void ff_vdpau_h264_picture_complete(H264Context *h);
+
+void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
+                                 int buf_size);
+
+void ff_vdpau_mpeg4_decode_picture(Mpeg4DecContext *s, const uint8_t *buf,
+                                   int buf_size);
+
+#endif /* AVCODEC_VDPAU_COMPAT_H */
diff --git a/libavcodec/vdpau_internal.h b/libavcodec/vdpau_internal.h
index cc49db8..6f762e4 100644
--- a/libavcodec/vdpau_internal.h
+++ b/libavcodec/vdpau_internal.h
@@ -29,12 +29,10 @@
 #if CONFIG_VDPAU
 #include <vdpau/vdpau.h>
 #endif
-#include "h264.h"
 
 #include "libavutil/frame.h"
 
 #include "avcodec.h"
-#include "mpeg4video.h"
 
 /** Extract VdpVideoSurface from an AVFrame */
 static inline uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
@@ -125,21 +123,4 @@ int ff_vdpau_mpeg_end_frame(AVCodecContext *avctx);
 int ff_vdpau_add_buffer(struct vdpau_picture_context *pic, const uint8_t *buf,
                         uint32_t buf_size);
 
-
-void ff_vdpau_add_data_chunk(uint8_t *data, const uint8_t *buf,
-                             int buf_size);
-
-void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
-                                    int buf_size, int slice_count);
-
-void ff_vdpau_h264_picture_start(H264Context *h);
-void ff_vdpau_h264_set_reference_frames(H264Context *h);
-void ff_vdpau_h264_picture_complete(H264Context *h);
-
-void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
-                                 int buf_size);
-
-void ff_vdpau_mpeg4_decode_picture(Mpeg4DecContext *s, const uint8_t *buf,
-                                   int buf_size);
-
 #endif /* AVCODEC_VDPAU_INTERNAL_H */



More information about the ffmpeg-cvslog mailing list