annotate libmpcodecs/ve_libdv.c @ 8388:45eb2d4d633c

The detection of a NetWM class window manager hints is tested before the test of a gnome class windomanager hints, since the gnome hints are outdated and replaced by the newer NetWM specification. Newer versions of Gnome support this standard, and therefore the test should be placed before the Gnome test. Windowmaker does not support NetWM and is checked after the NetWM test. In fact the new code should be placed also before the test for IceWM. Regarding other WMs such as KDE, IceWM the change is not tested. patch by Svante Signell <svante.signell@telia.com>
author arpi
date Sat, 07 Dec 2002 01:25:30 +0000
parents f296ff05bcd0
children 27da710563c2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
1 // requires libdv-0.9.5 !!!
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
2 // (v0.9.0 is too old and has no encoding functionality exported!)
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
3
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
4 #include <stdio.h>
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
5 #include <stdlib.h>
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
6 #include <string.h>
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
7
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
8 #include "../config.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
9 #include "../mp_msg.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
10
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
11 #ifdef HAVE_LIBDV095
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
12
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
13 #include "codec-cfg.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
14 #include "stream.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
15 #include "demuxer.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
16 #include "stheader.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
17
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
18 #include "aviwrite.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
19
5607
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5577
diff changeset
20 #include "img_format.h"
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5577
diff changeset
21 #include "mp_image.h"
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
22 #include "vf.h"
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
23
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
24 #include <libdv/dv.h>
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
25
7127
1e47c2e7aa8e mostly compiler warning fixes, some small bugfix
arpi
parents: 5607
diff changeset
26 extern void mencoder_write_chunk(aviwrite_stream_t *s,int len,unsigned int flags);
1e47c2e7aa8e mostly compiler warning fixes, some small bugfix
arpi
parents: 5607
diff changeset
27
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
28 #ifndef DV_WIDTH
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
29 #define DV_WIDTH 720
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
30 #define DV_PAL_HEIGHT 576
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
31 #define DV_NTSC_HEIGHT 480
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
32 #endif
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
33
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
34 struct vf_priv_s {
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
35 aviwrite_stream_t* mux;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
36 dv_encoder_t* enc;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
37
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
38 };
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
39 #define mux_v (vf->priv->mux)
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
40
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
41 //===========================================================================//
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
42
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
43 static int config(struct vf_instance_s* vf,
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
44 int width, int height, int d_width, int d_height,
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
45 unsigned int flags, unsigned int outfmt){
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
46
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
47 if(width!=DV_WIDTH || (height!=DV_PAL_HEIGHT && height!=DV_NTSC_HEIGHT)){
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
48 mp_msg(MSGT_VFILTER,MSGL_ERR,"DV: only 720x480 (NTSC) and 720x576 (PAL) resolutions allowed! try with -vop scale=720:480\n");
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
49 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
50
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
51 vf->priv->enc->isPAL=(height==DV_PAL_HEIGHT);
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
52 vf->priv->enc->is16x9=(d_width/(float)d_height > 1.7); // 16:9=1.777777
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
53 vf->priv->enc->vlc_encode_passes=3;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
54 vf->priv->enc->static_qno=0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
55 vf->priv->enc->force_dct=0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
56
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
57 mux_v->bih->biWidth=width;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
58 mux_v->bih->biHeight=height;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
59 mux_v->bih->biSizeImage=mux_v->bih->biWidth*mux_v->bih->biHeight*(mux_v->bih->biBitCount/8);
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
60
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
61 return 1;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
62 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
63
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
64 static int control(struct vf_instance_s* vf, int request, void* data){
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
65
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
66 return CONTROL_UNKNOWN;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
67 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
68
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
69 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
70 if(fmt==IMGFMT_YUY2) return 3;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
71 if(fmt==IMGFMT_RGB24) return 1;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
72 return 0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
73 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
74
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7127
diff changeset
75 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
76
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
77 dv_encode_full_frame(vf->priv->enc, mpi->planes,
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
78 (mpi->flags&MP_IMGFLAG_YUV) ? e_dv_color_yuv : e_dv_color_rgb,
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
79 mux_v->buffer);
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
80
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
81 mencoder_write_chunk(mux_v, 480 * (vf->priv->enc->isPAL ? 300 : 250) , 0x10);
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7127
diff changeset
82 return 1;
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
83 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
84
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
85 //===========================================================================//
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
86
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
87 static int vf_open(vf_instance_t *vf, char* args){
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
88 vf->config=config;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
89 vf->control=control;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
90 vf->query_format=query_format;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
91 vf->put_image=put_image;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
92 vf->priv=malloc(sizeof(struct vf_priv_s));
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
93 memset(vf->priv,0,sizeof(struct vf_priv_s));
7557
f296ff05bcd0 warning fixes
arpi
parents: 7368
diff changeset
94 vf->priv->mux=(aviwrite_stream_t*)args;
5577
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
95
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
96 vf->priv->enc=dv_encoder_new(1,1,1); // FIXME, parse some options!
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
97 if(!vf->priv->enc) return 0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
98
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
99 mux_v->bih=malloc(sizeof(BITMAPINFOHEADER));
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
100 mux_v->bih->biSize=sizeof(BITMAPINFOHEADER);
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
101 mux_v->bih->biWidth=0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
102 mux_v->bih->biHeight=0;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
103 mux_v->bih->biCompression=mmioFOURCC('d','v','s','d');
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
104 mux_v->bih->biPlanes=1;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
105 mux_v->bih->biBitCount=24;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
106
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
107 return 1;
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
108 }
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
109
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
110 vf_info_t ve_info_libdv = {
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
111 "DV encoder using libdv",
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
112 "libdv",
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
113 "A'rpi",
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
114 "for internal use by mencoder",
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
115 vf_open
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
116 };
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
117
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
118 //===========================================================================//
80eedd3ef6d3 RGB24/YUY2 -> DV encoding, using libdv
arpi
parents:
diff changeset
119 #endif