summaryrefslogtreecommitdiffstats
path: root/libass/ass.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2011-06-06 22:18:06 +0200
committerGrigori Goronzy <greg@blackbox>2011-06-06 23:14:12 +0200
commit07ce715629e3b5b39e4a4def724d649222f53f2f (patch)
tree2938a50ca742a064b9a49829613b401e4d8095fc /libass/ass.c
parentc6e1dca7d0baae3f3324c722624e337a3e417f65 (diff)
downloadlibass-07ce715629e3b5b39e4a4def724d649222f53f2f.tar.bz2
libass-07ce715629e3b5b39e4a4def724d649222f53f2f.tar.xz
refactor: move track init into ass track parser
Diffstat (limited to 'libass/ass.c')
-rw-r--r--libass/ass.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/libass/ass.c b/libass/ass.c
index bdf2499..e262cc3 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -1269,3 +1269,36 @@ ASS_Track *ass_new_track(ASS_Library *library)
track->parser_priv = calloc(1, sizeof(ASS_ParserPriv));
return track;
}
+
+/**
+ * \brief Prepare track for rendering
+ */
+void ass_lazy_track_init(ASS_Library *lib, ASS_Track *track)
+{
+ if (track->PlayResX && track->PlayResY)
+ return;
+ if (!track->PlayResX && !track->PlayResY) {
+ ass_msg(lib, MSGL_WARN,
+ "Neither PlayResX nor PlayResY defined. Assuming 384x288");
+ track->PlayResX = 384;
+ track->PlayResY = 288;
+ } else {
+ if (!track->PlayResY && track->PlayResX == 1280) {
+ track->PlayResY = 1024;
+ ass_msg(lib, MSGL_WARN,
+ "PlayResY undefined, setting to %d", track->PlayResY);
+ } else if (!track->PlayResY) {
+ track->PlayResY = track->PlayResX * 3 / 4;
+ ass_msg(lib, MSGL_WARN,
+ "PlayResY undefined, setting to %d", track->PlayResY);
+ } else if (!track->PlayResX && track->PlayResY == 1024) {
+ track->PlayResX = 1280;
+ ass_msg(lib, MSGL_WARN,
+ "PlayResX undefined, setting to %d", track->PlayResX);
+ } else if (!track->PlayResX) {
+ track->PlayResX = track->PlayResY * 4 / 3;
+ ass_msg(lib, MSGL_WARN,
+ "PlayResX undefined, setting to %d", track->PlayResX);
+ }
+ }
+}