summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vd_libmpeg2.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-09 02:18:33 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-09 02:18:33 +0000
commit3879252453427d640298f7d77858a2a0a7e76ce6 (patch)
treeb2f35aed3305365aa47f3be416aa5ac1c23db748 /libmpcodecs/vd_libmpeg2.c
parenteec56fa481ddb064092fa2914634875d6e2ae3c2 (diff)
downloadmpv-3879252453427d640298f7d77858a2a0a7e76ce6.tar.bz2
mpv-3879252453427d640298f7d77858a2a0a7e76ce6.tar.xz
mpng, libmpeg2 added, none of them finished :(
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4999 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/vd_libmpeg2.c')
-rw-r--r--libmpcodecs/vd_libmpeg2.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/libmpcodecs/vd_libmpeg2.c b/libmpcodecs/vd_libmpeg2.c
new file mode 100644
index 0000000000..c2d5d4e6bd
--- /dev/null
+++ b/libmpcodecs/vd_libmpeg2.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "config.h"
+#include "mp_msg.h"
+
+#include "vd_internal.h"
+
+static vd_info_t info =
+{
+ "MPEG 1/2 Video decoder",
+ "libmpeg2",
+ VFM_MPEG,
+ "A'rpi",
+ "Aaron & Walken",
+ "native"
+};
+
+LIBVD_EXTERN(libmpeg2)
+
+#include "libmpdemux/parse_es.h"
+
+#include "libvo/video_out.h"
+#include "libmpeg2/mpeg2.h"
+#include "libmpeg2/mpeg2_internal.h"
+
+extern picture_t *picture; // exported from libmpeg2/decode.c
+
+// to set/get/query special features/parameters
+static int control(sh_video_t *sh,int cmd,void* arg,...){
+ return CONTROL_UNKNOWN;
+}
+
+// init driver
+static int init(sh_video_t *sh){
+ mpeg2_init();
+ picture->pp_options=0; //divx_quality;
+ // send seq header to the decoder: *** HACK ***
+ mpeg2_decode_data(NULL,videobuffer,videobuffer+videobuf_len,0);
+ mpeg2_allocate_image_buffers (picture);
+ return 1;
+}
+
+// uninit driver
+static void uninit(sh_video_t *sh){
+ mpeg2_free_image_buffers (picture);
+}
+
+// decode a frame
+static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
+ mp_image_t* mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_DRAW_CALLBACK,
+ sh->disp_w, sh->disp_h);
+ mpeg2_decode_data(sh->video_out, data, data+len,flags&3); // decode
+ return mpi;
+}
+