Mercurial > mplayer.hg
annotate libmpcodecs/ve_x264.c @ 26644:bb7f4eecf77a
synced with r26674
author | ptt |
---|---|
date | Tue, 06 May 2008 15:06:56 +0000 |
parents | 9d0b189ce1b2 |
children | bd0554dbc8e5 |
rev | line source |
---|---|
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
1 /***************************************************************************** |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
2 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
3 * - H.264 encoder for mencoder using x264 - |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
4 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
5 * Copyright (C) 2004 LINUX4MEDIA GmbH |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
6 * Copyright (C) 2004 Ark Linux |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
7 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
8 * Written by Bernhard Rosenkraenzer <bero@arklinux.org> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
9 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
11 * it under the terms of the GNU General Public License version 2 as |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
12 * published by the Free Software Foundation, or if, and only if, |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
13 * version 2 is ruled invalid in a court of law, any later version |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
14 * of the GNU General Public License published by the Free Software |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
15 * Foundation. |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
16 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
17 * This program is distributed in the hope that it will be useful, |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
19 * MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
20 * GNU General Public License for more details. |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
21 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
22 * You should have received a copy of the GNU General Public License |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
23 * along with this program; if not, write to the Free Software |
19614 | 24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
25 * |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
26 *****************************************************************************/ |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
27 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
28 #include <stdio.h> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
29 #include <stdlib.h> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
30 #include <string.h> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
31 #include <errno.h> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
32 |
17012 | 33 #include "config.h" |
34 #include "mp_msg.h" | |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
35 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
36 #include "m_option.h" |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
37 #include "codec-cfg.h" |
22600
3c2b4a866c6a
Add explicit location for headers from the stream/ directory.
diego
parents:
22158
diff
changeset
|
38 #include "stream/stream.h" |
22601
ed8f90096c65
Add explicit location for headers from the libmpdemux/ directory.
diego
parents:
22600
diff
changeset
|
39 #include "libmpdemux/demuxer.h" |
ed8f90096c65
Add explicit location for headers from the libmpdemux/ directory.
diego
parents:
22600
diff
changeset
|
40 #include "libmpdemux/stheader.h" |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
41 |
22600
3c2b4a866c6a
Add explicit location for headers from the stream/ directory.
diego
parents:
22158
diff
changeset
|
42 #include "stream/stream.h" |
22601
ed8f90096c65
Add explicit location for headers from the libmpdemux/ directory.
diego
parents:
22600
diff
changeset
|
43 #include "libmpdemux/muxer.h" |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
44 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
45 #include "img_format.h" |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
46 #include "mp_image.h" |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
47 #include "vf.h" |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
48 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
49 #include <x264.h> |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
50 |
25607
9d0b189ce1b2
Fix illegal identifiers: Names starting with __ or _ and uppercase are reserved
diego
parents:
25570
diff
changeset
|
51 typedef struct h264_module_t { |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
52 muxer_stream_t *mux; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
53 x264_t * x264; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
54 x264_picture_t pic; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
55 } h264_module_t; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
56 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
57 extern char* passtmpfile; |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
58 static int turbo = 0; |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
59 static x264_param_t param; |
20317 | 60 static int parse_error = 0; |
16366
e054a3c93a26
custom quantization matrix for x264, original patch by Robert Swain < robert POUM swain AH gmail POUM com>
gpoirier
parents:
16016
diff
changeset
|
61 |
19577
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
62 static int encode_nals(uint8_t *buf, int size, x264_nal_t *nals, int nnal){ |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
63 uint8_t *p = buf; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
64 int i; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
65 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
66 for(i = 0; i < nnal; i++){ |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
67 int s = x264_nal_encode(p, &size, 1, nals + i); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
68 if(s < 0) |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
69 return -1; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
70 p += s; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
71 } |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
72 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
73 return p - buf; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
74 } |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
75 |
17906
20aca9baf5d8
passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents:
17902
diff
changeset
|
76 static int put_image(struct vf_instance_s *vf, mp_image_t *mpi, double pts); |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
77 static int encode_frame(struct vf_instance_s *vf, x264_picture_t *pic_in); |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
78 |
25232
893db6cc97b2
Add appropriate const specifiers to some custom parse functions.
reimar
parents:
22601
diff
changeset
|
79 void x264enc_set_param(const m_option_t* opt, char* arg) |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
80 { |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
81 static int initted = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
82 if(!initted) { |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
83 x264_param_default(¶m); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
84 x264_param_parse(¶m, "psnr", "no"); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
85 x264_param_parse(¶m, "ssim", "no"); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
86 initted = 1; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
87 } |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
88 |
22032
62d7b935df2e
fix a segfault if -x264encopts is the last commandline option (with no argument)
lorenm
parents:
21660
diff
changeset
|
89 if(!arg) { |
62d7b935df2e
fix a segfault if -x264encopts is the last commandline option (with no argument)
lorenm
parents:
21660
diff
changeset
|
90 parse_error = 1; |
62d7b935df2e
fix a segfault if -x264encopts is the last commandline option (with no argument)
lorenm
parents:
21660
diff
changeset
|
91 return; |
62d7b935df2e
fix a segfault if -x264encopts is the last commandline option (with no argument)
lorenm
parents:
21660
diff
changeset
|
92 } |
62d7b935df2e
fix a segfault if -x264encopts is the last commandline option (with no argument)
lorenm
parents:
21660
diff
changeset
|
93 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
94 while(*arg) { |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
95 char *name = arg; |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
96 char *value; |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
97 int ret; |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
98 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
99 arg += strcspn(arg, ":"); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
100 if(*arg) { |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
101 *arg = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
102 arg++; |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
103 } |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
104 |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
105 value = strchr( name, '=' ); |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
106 if(value) { |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
107 *value = 0; |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
108 value++; |
16366
e054a3c93a26
custom quantization matrix for x264, original patch by Robert Swain < robert POUM swain AH gmail POUM com>
gpoirier
parents:
16016
diff
changeset
|
109 } |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
110 |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
111 if(!strcmp(name, "turbo")) { |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
112 turbo = value ? atoi(value) : 1; |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
113 continue; |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
114 } |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
115 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
116 ret = x264_param_parse(¶m, name, value); |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
117 if(ret == X264_PARAM_BAD_NAME) |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
118 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option x264encopts: Unknown suboption %s\n", name); |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
119 if(ret == X264_PARAM_BAD_VALUE) |
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
120 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option x264encopts: Bad argument %s=%s\n", name, value ? value : "(null)"); |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
121 |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
122 /* mark this option as done, so it's not reparsed if there's another -x264encopts */ |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
123 *name = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
124 |
20317 | 125 parse_error |= ret; |
16366
e054a3c93a26
custom quantization matrix for x264, original patch by Robert Swain < robert POUM swain AH gmail POUM com>
gpoirier
parents:
16016
diff
changeset
|
126 } |
e054a3c93a26
custom quantization matrix for x264, original patch by Robert Swain < robert POUM swain AH gmail POUM com>
gpoirier
parents:
16016
diff
changeset
|
127 |
20340
9d88396480bb
x264: don't enable turbo in the middle pass of a 3pass encode. (broke in r20060)
lorenm
parents:
20333
diff
changeset
|
128 if(param.rc.b_stat_write && !param.rc.b_stat_read) { |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
129 /* Adjust or disable some flags to gain speed in the first pass */ |
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
130 if(turbo == 1) |
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
131 { |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
132 param.i_frame_reference = ( param.i_frame_reference + 1 ) >> 1; |
21531
a90aa203186c
Get rid of min/max macros from aviheader.h, they do not belong here.
reimar
parents:
20340
diff
changeset
|
133 param.analyse.i_subpel_refine = FFMAX( FFMIN( 3, param.analyse.i_subpel_refine - 1 ), 1 ); |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
134 param.analyse.inter &= ( ~X264_ANALYSE_PSUB8x8 ); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
135 param.analyse.inter &= ( ~X264_ANALYSE_BSUB16x16 ); |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
136 param.analyse.i_trellis = 0; |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
137 } |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
138 else if(turbo >= 2) |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
139 { |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
140 param.i_frame_reference = 1; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
141 param.analyse.i_subpel_refine = 1; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
142 param.analyse.i_me_method = X264_ME_DIA; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
143 param.analyse.inter = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
144 param.analyse.b_transform_8x8 = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
145 param.analyse.b_weighted_bipred = 0; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
146 param.analyse.i_trellis = 0; |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
147 } |
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
148 } |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
149 } |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
150 |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
151 static int config(struct vf_instance_s* vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt) { |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
152 h264_module_t *mod=(h264_module_t*)vf->priv; |
20317 | 153 |
154 if(parse_error) | |
155 return 0; | |
156 | |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
157 mod->mux->bih->biWidth = width; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
158 mod->mux->bih->biHeight = height; |
25570 | 159 mod->mux->bih->biSizeImage = width * height * 3; |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
160 mod->mux->aspect = (float)d_width/d_height; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
161 |
20333
7f84082900a3
Add a call to x264enc_set_param in config, otherwise mencoder -ovc x264
reimar
parents:
20317
diff
changeset
|
162 // make sure param is initialized |
7f84082900a3
Add a call to x264enc_set_param in config, otherwise mencoder -ovc x264
reimar
parents:
20317
diff
changeset
|
163 x264enc_set_param(NULL, ""); |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
164 param.i_width = width; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
165 param.i_height = height; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
166 param.i_fps_num = mod->mux->h.dwRate; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
167 param.i_fps_den = mod->mux->h.dwScale; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
168 param.vui.i_sar_width = d_width*height; |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
169 param.vui.i_sar_height = d_height*width; |
15964
d244178a3105
x264 fast first pass, patch by Robert Swain < robert POUM swain AH gmail POUM com >
gpoirier
parents:
15744
diff
changeset
|
170 |
20297
b69c85b29cb5
make -passlogfile work with x264 again (broke in r20060)
lorenm
parents:
20252
diff
changeset
|
171 x264_param_parse(¶m, "stats", passtmpfile); |
b69c85b29cb5
make -passlogfile work with x264 again (broke in r20060)
lorenm
parents:
20252
diff
changeset
|
172 |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
173 switch(outfmt) { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
174 case IMGFMT_I420: |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
175 param.i_csp = X264_CSP_I420; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
176 break; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
177 case IMGFMT_YV12: |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
178 param.i_csp = X264_CSP_YV12; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
179 break; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
180 default: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
181 mp_msg(MSGT_MENCODER, MSGL_ERR, "Wrong colorspace.\n"); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
182 return 0; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
183 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
184 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
185 mod->x264 = x264_encoder_open(¶m); |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
186 if(!mod->x264) { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
187 mp_msg(MSGT_MENCODER, MSGL_ERR, "x264_encoder_open failed.\n"); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
188 return 0; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
189 } |
19577
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
190 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
191 if(!param.b_repeat_headers){ |
19577
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
192 uint8_t *extradata; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
193 x264_nal_t *nal; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
194 int extradata_size, nnal, i, s = 0; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
195 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
196 x264_encoder_headers(mod->x264, &nal, &nnal); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
197 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
198 /* 5 bytes NAL header + worst case escaping */ |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
199 for(i = 0; i < nnal; i++) |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
200 s += 5 + nal[i].i_payload * 4 / 3; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
201 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
202 extradata = malloc(s); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
203 extradata_size = encode_nals(extradata, s, nal, nnal); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
204 |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
205 mod->mux->bih= realloc(mod->mux->bih, sizeof(BITMAPINFOHEADER) + extradata_size); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
206 memcpy(mod->mux->bih + 1, extradata, extradata_size); |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
207 mod->mux->bih->biSize= sizeof(BITMAPINFOHEADER) + extradata_size; |
7e19b1207b81
"global header" support, this is pretty much just copy and pasted code from
michael
parents:
19125
diff
changeset
|
208 } |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
209 |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
210 if (param.i_bframe > 1 && param.b_bframe_pyramid) |
17659 | 211 mod->mux->decoder_delay = 2; |
212 else | |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
213 mod->mux->decoder_delay = param.i_bframe ? 1 : 0; |
17659 | 214 |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
215 return 1; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
216 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
217 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
218 static int control(struct vf_instance_s* vf, int request, void *data) |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
219 { |
20054
8760c8681eac
Remove the x264 option parser, and pass the options on to libx264 as a string instead. This provides automatic support for all current and future x264 options.
lorenm
parents:
19623
diff
changeset
|
220 h264_module_t *mod=(h264_module_t*)vf->priv; |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
221 switch(request){ |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
222 case VFCTRL_FLUSH_FRAMES: |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
223 if(param.i_bframe) |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
224 while(encode_frame(vf, NULL) > 0); |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
225 return CONTROL_TRUE; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
226 default: |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
227 return CONTROL_UNKNOWN; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
228 } |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
229 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
230 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
231 static int query_format(struct vf_instance_s* vf, unsigned int fmt) |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
232 { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
233 switch(fmt) { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
234 case IMGFMT_I420: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
235 return (VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
236 case IMGFMT_YV12: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
237 case IMGFMT_422P: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
238 case IMGFMT_444P: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
239 case IMGFMT_YVYU: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
240 case IMGFMT_RGB: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
241 case IMGFMT_BGR: |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
242 case IMGFMT_BGR32: |
14943 | 243 /* These colorspaces are supported, but they'll just have |
244 * to be converted to I420 internally */ | |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
245 return 0; /* VFCAP_CSP_SUPPORTED */ |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
246 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
247 return 0; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
248 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
249 |
17906
20aca9baf5d8
passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents:
17902
diff
changeset
|
250 static int put_image(struct vf_instance_s *vf, mp_image_t *mpi, double pts) |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
251 { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
252 h264_module_t *mod=(h264_module_t*)vf->priv; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
253 int i; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
254 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
255 memset(&mod->pic, 0, sizeof(x264_picture_t)); |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
256 mod->pic.img.i_csp=param.i_csp; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
257 mod->pic.img.i_plane=3; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
258 for(i=0; i<4; i++) { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
259 mod->pic.img.plane[i] = mpi->planes[i]; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
260 mod->pic.img.i_stride[i] = mpi->stride[i]; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
261 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
262 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
263 mod->pic.i_type = X264_TYPE_AUTO; |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
264 |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
265 return encode_frame(vf, &mod->pic) >= 0; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
266 } |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
267 |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
268 static int encode_frame(struct vf_instance_s *vf, x264_picture_t *pic_in) |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
269 { |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
270 h264_module_t *mod=(h264_module_t*)vf->priv; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
271 x264_picture_t pic_out; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
272 x264_nal_t *nal; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
273 int i_nal; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
274 int i_size = 0; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
275 int i; |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
276 |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
277 if(x264_encoder_encode(mod->x264, &nal, &i_nal, pic_in, &pic_out) < 0) { |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
278 mp_msg(MSGT_MENCODER, MSGL_ERR, "x264_encoder_encode failed\n"); |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
279 return -1; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
280 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
281 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
282 for(i=0; i < i_nal; i++) { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
283 int i_data = mod->mux->buffer_size - i_size; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
284 i_size += x264_nal_encode(mod->mux->buffer + i_size, &i_data, 1, &nal[i]); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
285 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
286 if(i_size>0) { |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
287 int keyframe = (pic_out.i_type == X264_TYPE_IDR) || |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
288 (pic_out.i_type == X264_TYPE_I |
20252
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
289 && param.i_frame_reference == 1 |
eaaf13b39595
fix multiple instances of -x264encopts on the commandline (broke in r20060)
lorenm
parents:
20054
diff
changeset
|
290 && !param.i_bframe); |
17487
fa17424b4c7b
change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents:
17402
diff
changeset
|
291 muxer_write_chunk(mod->mux, i_size, keyframe?0x10:0, MP_NOPTS_VALUE, MP_NOPTS_VALUE); |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
292 } |
17659 | 293 else |
294 ++mod->mux->encoder_delay; | |
14784
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
295 |
53d306774ce2
sync to x264 r137: adaptive B-frame decision, flush delayed frames.
lorenm
parents:
14759
diff
changeset
|
296 return i_size; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
297 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
298 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
299 static void uninit(struct vf_instance_s *vf) |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
300 { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
301 h264_module_t *mod=(h264_module_t*)vf->priv; |
22158
a6a93224cf4d
Avoid crash when uninit is called without ever calling config in x264 encoder
reimar
parents:
22032
diff
changeset
|
302 if (mod->x264) |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
303 x264_encoder_close(mod->x264); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
304 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
305 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
306 static int vf_open(vf_instance_t *vf, char *args) { |
13334 | 307 h264_module_t *mod; |
308 | |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
309 vf->config = config; |
14878 | 310 vf->default_caps = VFCAP_CONSTANT; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
311 vf->control = control; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
312 vf->query_format = query_format; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
313 vf->put_image = put_image; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
314 vf->uninit = uninit; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
315 vf->priv = malloc(sizeof(h264_module_t)); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
316 |
13334 | 317 mod=(h264_module_t*)vf->priv; |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
318 mod->mux = (muxer_stream_t*)args; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
319 mod->mux->bih = malloc(sizeof(BITMAPINFOHEADER)); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
320 memset(mod->mux->bih, 0, sizeof(BITMAPINFOHEADER)); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
321 mod->mux->bih->biSize = sizeof(BITMAPINFOHEADER); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
322 mod->mux->bih->biPlanes = 1; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
323 mod->mux->bih->biBitCount = 24; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
324 mod->mux->bih->biCompression = mmioFOURCC('h', '2', '6', '4'); |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
325 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
326 return 1; |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
327 } |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
328 |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
329 vf_info_t ve_info_x264 = { |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
330 "H.264 encoder", |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
331 "x264", |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
332 "Bernhard Rosenkraenzer <bero@arklinux.org>", |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
333 "(C) 2004 LINUX4MEDIA GmbH; (C) 2004 Ark Linux", |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
334 vf_open |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
diff
changeset
|
335 }; |