Hi all,
I created PopplerMedia Object from the media file. It will be
helpful for creating rendition actions.
Please give your suggestions.
Thanks
--
A Srinivas
Index: poppler-0.16.2/glib/poppler-media.cc
===================================================================
--- poppler-0.16.2/glib/poppler-media.cc (revision 14)
+++ poppler-0.16.2/glib/poppler-media.cc (working copy)
@@ -109,7 +109,77 @@
return media;
}
+static gboolean
+_poppler_media_get_stream_from_file (XRef *xrefA,
+ const char *file,
+ Stream **media_stream)
+{
+ GError **error = NULL;
+ FILE *fp;
+ if (!(fp = fopen(file, "rb")))
+ {
+ g_set_error (error,
+ G_FILE_ERROR,
+ g_file_error_from_errno (errno),
+ "Error opening file: %s",
+ file);
+ return FALSE;
+ }
+
+ unsigned int size = 0;
+ if (fseek(fp, 0, SEEK_END))
+ {
+ g_set_error (error,
+ G_FILE_ERROR,
+ g_file_error_from_errno (errno),
+ "fseek() couldn't seek to the end of file: '%s'",
+ file);
+ return FALSE;
+ }
+ size = ftell(fp);
+
+ Object obj1, obj2;
+ obj1.initDict(xrefA);
+ obj1.dictSet("Length", obj2.initInt(size));
+ *media_stream = new FileStream(fp, 0, 0, size, &obj1);
+
+ return TRUE;
+}
+
/**
+* poppler_media_from_file:
+* @doc: a #PopplerDocument
+* @media_file: a media file to be embedded
+* @mimetype: mimetype of the video
+* @is_embedded: if TRUE embed the video by passing stream, else embed it from file
+*
+* Return value: a #PopplerMedia
+*
+* Since: 0.18
+*/
+PopplerMedia *
+poppler_media_from_file (PopplerDocument *doc,
+ const char *media_file,
+ const char *mimetype,
+ gboolean is_embedded)
+{
+ PopplerMedia *media;
+
+ g_return_val_if_fail (media_file != NULL, NULL);
+ g_return_val_if_fail (doc != NULL, NULL);
+
+ media = POPPLER_MEDIA (g_object_new (POPPLER_TYPE_MEDIA, NULL));
+ media->stream = NULL;
+ if (is_embedded) {
+ _poppler_media_get_stream_from_file (doc->doc->getXRef(), media_file, &media->stream);
+ media->mime_type = g_strdup (mimetype);
+ }
+ media->filename = g_strdup (media_file);
+
+ return media;
+}
+
+/**
* poppler_media_get_filename:
* @poppler_media: a #PopplerMedia
*
Index: poppler-0.16.2/glib/poppler-media.h
===================================================================
--- poppler-0.16.2/glib/poppler-media.h (revision 14)
+++ poppler-0.16.2/glib/poppler-media.h (working copy)
@@ -61,6 +61,10 @@
gboolean poppler_media_save (PopplerMedia *poppler_media,
const char *filename,
GError **error);
+PopplerMedia *poppler_media_from_file (PopplerDocument *doc,
+ const gchar *media_file,
+ const gchar *mimetype,
+ gboolean is_embedded);
gboolean poppler_media_save_to_callback (PopplerMedia *poppler_media,
PopplerMediaSaveFunc save_func,
gpointer user_data,
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler