61 trailer = strstr(trailer,
"Format:");
63 trailer = strstr(trailer,
"\n");
73 if (par->
extradata[header_size - 1] !=
'\n')
76 if (!strstr(par->
extradata,
"\n[Events]"))
77 avio_printf(s->
pb,
"[Events]\r\nFormat: %s, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n",
111 av_log(s,
AV_LOG_DEBUG,
"wrote %d ASS lines, cached dialogues: %d, waiting for event id %d\n",
141 prev->
next = dialogue;
142 dialogue->
prev = prev;
148 next->
prev = dialogue;
149 dialogue->
next = next;
163 int hh1, mm1, ss1, ms1;
164 int hh2, mm2, ss2, ms2;
177 if (ass->
ssa_mode && !strncmp(p,
"Marked=", 7))
180 layer = strtol(p, &p, 10);
183 hh1 = (
int)(start / 360000); mm1 = (
int)(start / 6000) % 60;
184 hh2 = (
int)(end / 360000); mm2 = (
int)(end / 6000) % 60;
185 ss1 = (
int)(start / 100) % 60; ms1 = (
int)(start % 100);
186 ss2 = (
int)(end / 100) % 60; ms2 = (
int)(end % 100);
187 if (hh1 > 9) hh1 = 9, mm1 = 59, ss1 = 59, ms1 = 99;
188 if (hh2 > 9) hh2 = 9, mm2 = 59, ss2 = 59, ms2 = 99;
190 dialogue->
line =
av_asprintf(
"%s%ld,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%s",
192 layer, hh1, mm1, ss1, ms1, hh2, mm2, ss2, ms2, p);
193 if (!dialogue->
line) {
216 #define OFFSET(x) offsetof(ASSContext, x)
217 #define E AV_OPT_FLAG_ENCODING_PARAM
219 {
"ignore_readorder",
"write events immediately, even if they're out-of-order",
OFFSET(ignore_readorder),
AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1,
E },
233 .mime_type =
"text/x-ass",
234 .extensions =
"ass,ssa",
241 .priv_class = &ass_class,
#define AV_LOG_WARNING
Something somehow does not look correct.
#define LIBAVUTIL_VERSION_INT
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
const char * av_default_item_name(void *ptr)
Return the context name.
struct DialogueLine * next
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
This struct describes the properties of an encoded stream.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
static av_cold int end(AVCodecContext *avctx)
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
AVStream ** streams
A list of all streams in the file.
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int extradata_size
Size of the extradata content in bytes.
struct DialogueLine * prev
char * av_asprintf(const char *fmt,...)
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
int void avio_flush(AVIOContext *s)
Force flushing of buffered data.
DialogueLine * dialogue_cache
AVIOContext * pb
I/O context.
Describe the class of an AVClass context structure.
DialogueLine * last_added_dialogue
void * priv_data
Format private data.
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
This structure stores compressed data.
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
int avio_printf(AVIOContext *s, const char *fmt,...) av_printf_format(2