annotate libmpcodecs/vf_yuy2.c @ 5699:1dde9686d33b

Good evening ladies and gentleman and welcome to the latest installment of the ongoing show "Reworking the docs for fun and profit". Your host Diego will be assisted by Nilmoni in presenting you: - spellchecking in all its glory - a grammar to the envy of all native speakers - answers now hopefully so clear that their respective questions shall never be asked again Somebody from the public raises his voice: "What about HTML errors?" The host is quick to answer: "Yes, there have been corrections." From the back of the auditory comes a subdued question: "And the FONT tags..?" The room falls silent. There is no answer and the host twitches. Finally the words "They have not been touched." escape from his mouth, barely audible. A murmur erupts but the jury nods and calms the crowd "Time to get back to serious hacking.". The host leaves the stage under polite applause and everybody scuttles off for their notebooks...
author arpi
date Fri, 19 Apr 2002 07:30:49 +0000
parents 1972c3475d93
children 21d6837f5d95
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5539
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
1 #include <stdio.h>
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
2 #include <stdlib.h>
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
3 #include <string.h>
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
4 #include <inttypes.h>
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
5
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
6 #include "../config.h"
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
7 #include "../mp_msg.h"
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
8
5607
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5565
diff changeset
9 #include "img_format.h"
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5565
diff changeset
10 #include "mp_image.h"
5539
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
11 #include "vf.h"
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
12
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
13 #include "../libvo/fastmemcpy.h"
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
14 #include "../postproc/rgb2rgb.h"
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
15
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
16 //===========================================================================//
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
17
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
18 static int config(struct vf_instance_s* vf,
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
19 int width, int height, int d_width, int d_height,
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
20 unsigned int flags, unsigned int outfmt){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
21
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
22 if(vf_next_query_format(vf,IMGFMT_YUY2)<=0){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
23 printf("yuy2 not supported by next filter/vo :(\n");
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
24 return 0;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
25 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
26
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
27 return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_YUY2);
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
28 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
29
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
30 static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
31 mp_image_t *dmpi;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
32
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
33 // hope we'll get DR buffer:
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
34 dmpi=vf_get_image(vf->next,IMGFMT_YUY2,
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
35 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
36 mpi->w, mpi->h);
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
37
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
38 yv12toyuy2(mpi->planes[0],mpi->planes[1],mpi->planes[2], dmpi->planes[0],
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
39 mpi->w,mpi->h, mpi->stride[0],mpi->stride[1],dmpi->stride[0]);
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
40
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
41 dmpi->qscale=mpi->qscale;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
42 dmpi->qstride=mpi->qstride;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
43
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
44 vf_next_put_image(vf,dmpi);
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
45 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
46
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
47 //===========================================================================//
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
48
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
49 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
50 switch(fmt){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
51 case IMGFMT_YV12:
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
52 case IMGFMT_I420:
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
53 case IMGFMT_IYUV:
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5539
diff changeset
54 return vf_next_query_format(vf,IMGFMT_YUY2) & (~VFCAP_CSP_SUPPORTED_BY_HW);
5539
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
55 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
56 return 0;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
57 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
58
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
59 static int open(vf_instance_t *vf, char* args){
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
60 vf->config=config;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
61 vf->put_image=put_image;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
62 vf->query_format=query_format;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
63 return 1;
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
64 }
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
65
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
66 vf_info_t vf_info_yuy2 = {
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
67 "fast YV12->YUY2 conversion",
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
68 "yuy2",
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
69 "A'rpi",
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
70 "",
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
71 open
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
72 };
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
73
eefc339440bc 2 new simple filters: yuy2 and format
arpi
parents:
diff changeset
74 //===========================================================================//