This file is indexed.

/usr/include/mjpegtools/liblavplay.h is in libmjpegtools-dev 1:2.1.0+debian-2.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
 * liblavplay - a librarified Linux Audio Video PLAYback
 *
 * Copyright (C) 2000 Rainer Johanni <Rainer@Johanni.de>
 * Extended by:   Gernot Ziegler  <gz@lysator.liu.se>
 *                Ronald Bultje   <rbultje@ronald.bitfreak.net>
 *              & many others
 *
 * A library for playing back MJPEG video via software MJPEG
 * decompression (using SDL) or via hardware MJPEG video
 * devices such as the Pinnacle/Miro DC10(+), Iomega Buz,
 * the Linux Media Labs LML33, the Matrox Marvel G200,
 * Matrox Marvel G400 and the Rainbow Runner G-series.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#include <lav_io.h>
#include <editlist.h>

enum {
   LAVPLAY_MSG_ERROR   = 0,
   LAVPLAY_MSG_WARNING = 1,
   LAVPLAY_MSG_INFO    = 2,
   LAVPLAY_MSG_DEBUG   = 3
};

enum {
   LAVPLAY_STATE_STOP    = 0,   /* uninitialized state */
   LAVPLAY_STATE_PAUSED  = 1,   /* also known as: speed = 0 */
   LAVPLAY_STATE_PLAYING = 2    /* speed != 0 */
};


typedef struct {
   int stats_changed;           /* has anything bad happened?                        */

   unsigned int frame;          /* current frame which is being played back          */
   unsigned int num_corrs_a;    /* Number of corrections because video ahead audio   */
   unsigned int num_corrs_b;    /* Number of corrections because video behind audio  */
   unsigned int num_aerr;       /* Number of audio buffers in error                  */
   unsigned int num_asamps;
   unsigned int nsync;          /* Number of syncs                                   */
   unsigned int nqueue;         /* Number of frames queued                           */
   int play_speed;              /* current playback speed                            */
   int audio;                   /* whether audio is currently turned on              */
   int norm;                    /* [0-2] playback norm: 0 = PAL, 1 = NTSC, 2 = SECAM */

   double tdiff;                /* video/audio time difference (sync debug purposes) */
} video_playback_stats;

typedef struct {
   char playback_mode;          /* [HSC] H = hardware/on-screen, C = hardware/on-card, S = software (SDL) */
   int  horizontal_offset;      /* Horizontal offset of the video when using hardware playback */
   int  vertical_offset;        /* Vertical offset of the video when using hardware playback */
   int  exchange_fields;        /* [0-1] whether to exchange the fields (for interlaced video) */
   int  zoom_to_fit;            /* [0-1] zooms video to fit the screen as good as possible */
   int  flicker_reduction;      /* [0-1] whether to use flicker reduction */
   int  sdl_width;              /* width of the SDL playback window in case of software playback */
   int  sdl_height;             /* height of the SDL playback window in case of software playback */
   int  soft_full_screen;       /* [0-1] set software-driven full-screen/screen-output, 1 = yes, 0 = no */
   int  vw_x_offset;            /* onscreen hardware playback video window X offset */
   int  vw_y_offset;            /* onscreen hardware playback video window Y offset */
   const char *video_dev;       /* the video device */
   const char *display;         /* the X-display (only important for -H) */

   int  audio;                  /* When play audio, 0:never, or sum of 1:forward, 2:reverse, 4:fast, 8:pause */
   int  use_write;              /* whether to use "write" (1) or mmap (0) for audio playback */
   const char *audio_dev;       /* the audio device */

   int  continuous;             /* [0-1] 0 = quit when the video has been played, 1 = continue cycle */
   int  sync_correction;        /* [0-1] Whether to enable sync correction, 0 = no, 1 = yes */
   int  sync_skip_frames;       /* [0-1] If video is behind audio: 1 = skip video, 0 = insert audio */
   int  sync_ins_frames;        /* [0-1] If video is ahead of audio: 1 = insert video, 0 = skip audio */
   int  MJPG_numbufs;           /* Number of MJPEG-buffers */

	int preserve_pathnames;		/* [0-1] Don't canonicalise pathnames
								 * when creating edit lists */
   EditList *editlist;          /* the main editlist */

   void (*output_statistics)(video_playback_stats *stats);     /* speaks for itself */
   void (*msg_callback)(int type, char* message);              /* callback for error/info/warn messages */
   void (*state_changed)(int new_state);                       /* changed state */
   void (*get_video_frame)(uint8_t *buffer, int *len, long num);  /* functions for manually submitting video/audio */
   void (*get_audio_sample)(uint8_t *buff, int *samps, long num); /* functions for manually submitting video/audio */

   void *settings;              /* private info - don't touch :-) (type UNKNOWN) */
} lavplay_t;


/* malloc the pointer and set default options */
lavplay_t *lavplay_malloc(void);

/* the whole video-playback cycle */
int lavplay_main(lavplay_t *info);

/* stop playing back (which also deinitializes everything) */
int lavplay_stop(lavplay_t *info);

/* free info and quit if necessary */
int lavplay_free(lavplay_t *info);

/* Wait until playback is finished */
void lavplay_busy(lavplay_t *info);


/*** Methods for searching through the video stream ***/

/* go to a specific frame, if framenum<0, then it's 'total_frames - framenum' */
int lavplay_set_frame(lavplay_t *info, long framenum);

/* increase (numframes>0) or decrease (numframes<0) a number of frames */
int lavplay_increase_frame(lavplay_t *info, long numframes);

/* set the playback speed, if speed<0, then we're playing backwards */
int lavplay_set_speed(lavplay_t *info, int speed);


/*** Methods for simple video editing (cut/paste) ***/

/* cut a number of frames into a buffer */
int lavplay_edit_cut(lavplay_t *info, long start, long end);

/* copy a number of frames into a buffer */
int lavplay_edit_copy(lavplay_t *info, long start, long end);

/* paste frames from the buffer into a certain position */
int lavplay_edit_paste(lavplay_t *info, long destination);

/* add a number of frames from a new movie to a certain position in the current movie */
int lavplay_edit_addmovie(lavplay_t *info, char *movie, long start, long end, long destination);

/* move a number of frames to a different position */
int lavplay_edit_move(lavplay_t *info, long start, long end, long destination);

/* delete a number of frames from the current movie */
int lavplay_edit_delete(lavplay_t *info, long start, long end);

/* set the part of the movie that will actually be played, start<0 means whole movie */
int lavplay_edit_set_playable(lavplay_t *info, long start, long end);


/*** Control sound during video playback */

/* mutes or unmutes audio (1 = on, 0 = off) */
int lavplay_toggle_audio(lavplay_t *info, int audio);


/*** Methods for saving the currently played movie to editlists or open new movies */

/* save a certain range of frames to an editlist */
int lavplay_save_selection(lavplay_t *info, char *filename, long start, long end);

/* save the whole current movie to an editlist */
int lavplay_save_all(lavplay_t *info, char *filename);

/* open a new (series of) movie */
int lavplay_open(lavplay_t *info, char **files, int num_files);