1 |
wdelano |
22 |
/* |
2 |
|
|
* opts.h - set optional parameters |
3 |
|
|
*/ |
4 |
|
|
|
5 |
|
|
/* |
6 |
|
|
* Copyright (c) 1995 The Regents of the University of California. |
7 |
|
|
* All rights reserved. |
8 |
|
|
* |
9 |
|
|
* Permission to use, copy, modify, and distribute this software and its |
10 |
|
|
* documentation for any purpose, without fee, and without written agreement is |
11 |
|
|
* hereby granted, provided that the above copyright notice and the following |
12 |
|
|
* two paragraphs appear in all copies of this software. |
13 |
|
|
* |
14 |
|
|
* IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR |
15 |
|
|
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT |
16 |
|
|
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF |
17 |
|
|
* CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
18 |
|
|
* |
19 |
|
|
* THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, |
20 |
|
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY |
21 |
|
|
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
22 |
|
|
* ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO |
23 |
|
|
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
24 |
|
|
*/ |
25 |
|
|
|
26 |
|
|
/* |
27 |
|
|
* $Header: /n/picasso/project/mpeg/mpeg_dist/mpeg_encode/headers/RCS/opts.h,v 1.3 1995/08/15 23:43:43 smoot Exp $ |
28 |
|
|
* $Log: opts.h,v $ |
29 |
|
|
* Revision 1.3 1995/08/15 23:43:43 smoot |
30 |
|
|
* *** empty log message *** |
31 |
|
|
* |
32 |
|
|
* Revision 1.2 1995/05/02 22:00:51 smoot |
33 |
|
|
* added TUNEing stuff |
34 |
|
|
* |
35 |
|
|
* Revision 1.1 1995/04/14 23:12:53 smoot |
36 |
|
|
* Initial revision |
37 |
|
|
* |
38 |
|
|
*/ |
39 |
|
|
|
40 |
|
|
#include "general.h" |
41 |
|
|
#include "ansi.h" |
42 |
|
|
#include "mtypes.h" |
43 |
|
|
|
44 |
|
|
/* |
45 |
|
|
TUNE b [limit] lower limit on how different a block must be to be DCT coded |
46 |
|
|
TUNE c [file [color-diff]] Collect statistics on Quantization |
47 |
|
|
TUNE d [RateScale DistortionScale] Do a DCT in the P search, not just DIFF |
48 |
|
|
TUNE k [breakpt end [slope]] Squash small lum values |
49 |
|
|
TUNE l Figure out Laplacian distrib and use them to dequantize and do snr calc |
50 |
|
|
TUNE n Dont consider DC differenece in DCT searches |
51 |
|
|
TUNE q Do MSE for distortion measure, not MAD |
52 |
|
|
TUNE s [Max] | [LumMax ChromMax] Squash small differences in successive frames |
53 |
|
|
TUNE u disallow skip blocks in B frames |
54 |
|
|
TUNE w filename [c] Write I block distortion numbers to file [with bit-rates] |
55 |
|
|
TUNE z Zaps Intra blocks in P/B frames. |
56 |
|
|
|
57 |
|
|
[ Note k and s make -snr numbers a lie, by playing with input ] |
58 |
|
|
[ Note d n and q are contradictory (can only use one) ] |
59 |
|
|
[ Note c will not work on parallel encodings ] |
60 |
|
|
*/ |
61 |
|
|
|
62 |
|
|
extern boolean tuneingOn; |
63 |
|
|
|
64 |
|
|
/* Smash to no-change a motion block DCT with MAD less than: */ |
65 |
|
|
/* DETAL b value */ |
66 |
|
|
extern int block_bound; |
67 |
|
|
|
68 |
|
|
/* Collect info on quantization */ |
69 |
|
|
extern boolean collect_quant; |
70 |
|
|
extern int collect_quant_detailed; |
71 |
|
|
extern FILE *collect_quant_fp; |
72 |
|
|
|
73 |
|
|
/* Nuke dim areas */ |
74 |
|
|
extern int kill_dim, kill_dim_break, kill_dim_end; |
75 |
|
|
extern float kill_dim_slope; |
76 |
|
|
|
77 |
|
|
|
78 |
|
|
/* Stuff to control MV search comparisons */ |
79 |
|
|
#define DEFAULT_SEARCH 0 |
80 |
|
|
#define LOCAL_DCT 1 /* Do DCT in search (SLOW!!!!) */ |
81 |
|
|
#define NO_DC_SEARCH 2 /* Dont consider DC component in motion searches */ |
82 |
|
|
#define DO_Mean_Squared_Distortion 3 /* Do Squared distortion, not ABS */ |
83 |
|
|
|
84 |
|
|
/* Parameters for special searches */ |
85 |
|
|
/* LOCAL_DCT */ |
86 |
|
|
extern float LocalDCTRateScale, LocalDCTDistortScale; |
87 |
|
|
|
88 |
|
|
/* Search Type Variable */ |
89 |
|
|
extern int SearchCompareMode; |
90 |
|
|
|
91 |
|
|
/* squash small differences */ |
92 |
|
|
extern boolean squash_small_differences; |
93 |
|
|
extern int SquashMaxLum, SquashMaxChr; |
94 |
|
|
|
95 |
|
|
/* Disallows Intra blocks in P/B code */ |
96 |
|
|
extern boolean IntraPBAllowed; |
97 |
|
|
|
98 |
|
|
/* Write out distortion numbers */ |
99 |
|
|
extern boolean WriteDistortionNumbers; |
100 |
|
|
extern int collect_distortion_detailed; |
101 |
|
|
extern FILE *distortion_fp; |
102 |
|
|
extern FILE *fp_table_rate[31], *fp_table_dist[31]; |
103 |
|
|
|
104 |
|
|
/* Laplacian Distrib */ |
105 |
|
|
extern boolean DoLaplace; |
106 |
|
|
extern double **L1, **L2, **Lambdas; |
107 |
|
|
extern int LaplaceNum, LaplaceCnum; |
108 |
|
|
|
109 |
|
|
/* Turn on/off skipping in B frames */ |
110 |
|
|
extern boolean BSkipBlocks; |
111 |
|
|
|
112 |
|
|
/* Procedures Prototypes */ |
113 |
|
|
int GetIQScale _ANSI_ARGS_((void)); |
114 |
|
|
int GetPQScale _ANSI_ARGS_((void)); |
115 |
|
|
int GetBQScale _ANSI_ARGS_((void)); |
116 |
|
|
void Tune_Init _ANSI_ARGS_((void)); |
117 |
|
|
char *SkipSpacesTabs _ANSI_ARGS_((char *start)); |
118 |
|
|
int CalcRLEHuffLength _ANSI_ARGS_((FlatBlock in)); |
119 |
|
|
void ParseTuneParam _ANSI_ARGS_((char *charPtr)); |
120 |
|
|
int mse _ANSI_ARGS_((Block blk1, Block blk2)); |