Skip to content

Commit 0674b36

Browse files
Merge pull request #65 from lafoletc/GstTagListAPI
gst_date_time_get_type() shall not be associated with GDate
2 parents eafe3eb + bc3899a commit 0674b36

File tree

5 files changed

+65
-15
lines changed

5 files changed

+65
-15
lines changed

src/org/freedesktop/gstreamer/DateTime.java

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/*
2+
* Copyright (c) 2016 Christophe Lafolet
23
* Copyright (c) 2010 Levente Farkas
34
*
45
* This code is free software: you can redistribute it and/or modify it under
@@ -16,16 +17,20 @@
1617

1718
package org.freedesktop.gstreamer;
1819

19-
import com.sun.jna.Pointer;
20+
import static org.freedesktop.gstreamer.lowlevel.GstDateTimeAPI.GSTDATETIME_API;
2021

22+
import org.freedesktop.gstreamer.lowlevel.GType;
2123
import org.freedesktop.gstreamer.lowlevel.NativeObject;
2224

23-
import static org.freedesktop.gstreamer.lowlevel.GstDateTimeAPI.GSTDATETIME_API;
25+
import com.sun.jna.Pointer;
2426

2527
/**
2628
*/
2729
public class DateTime extends NativeObject {
30+
2831
public static final String GTYPE_NAME = "GstDateTime";
32+
public static final GType GTYPE = GSTDATETIME_API.gst_date_time_get_type();
33+
2934

3035
public static DateTime createInstanceLocalEpoch(long secs) {
3136
return new DateTime(GSTDATETIME_API.gst_date_time_new_from_unix_epoch_local_time(secs), false, true);
@@ -34,6 +39,7 @@ public static DateTime createInstanceLocalEpoch(long secs) {
3439
public DateTime(Initializer init) {
3540
super(init);
3641
}
42+
3743
public DateTime(Pointer ptr, boolean needRef, boolean ownsHandle) {
3844
this(initializer(ptr, needRef, ownsHandle));
3945
}
@@ -43,4 +49,37 @@ protected void disposeNativeHandle(Pointer ptr) {
4349
GSTDATETIME_API.gst_date_time_unref(ptr);
4450
}
4551

52+
public int getYear() {
53+
return GSTDATETIME_API.gst_date_time_get_year(handle());
54+
}
55+
56+
public int getMonth() {
57+
return GSTDATETIME_API.gst_date_time_get_month(handle());
58+
}
59+
60+
public int getDay() {
61+
return GSTDATETIME_API.gst_date_time_get_day(handle());
62+
}
63+
64+
public int getHour() {
65+
return GSTDATETIME_API.gst_date_time_get_hour(handle());
66+
}
67+
68+
public int getMinute() {
69+
return GSTDATETIME_API.gst_date_time_get_minute(handle());
70+
}
71+
72+
public int getSecond() {
73+
return GSTDATETIME_API.gst_date_time_get_second(handle());
74+
}
75+
76+
public int getMicrosecond() {
77+
return GSTDATETIME_API.gst_date_time_get_microsecond(handle());
78+
}
79+
80+
@Override
81+
public String toString() {
82+
return "" + getYear() + "-" + getMonth() + "-" + getDay() + " " + getHour() + ":" + getMinute() + ":" + getSecond() + "." + getMicrosecond();
83+
}
84+
4685
}

src/org/freedesktop/gstreamer/TagList.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/*
2+
* Copyright (c) 2016 Christophe Lafolet
23
* Copyright (c) 2014 Tom Greenwood <[email protected]>
34
* Copyright (c) 2007 Wayne Meissner
45
*
@@ -20,6 +21,8 @@
2021
package org.freedesktop.gstreamer;
2122

2223
import static org.freedesktop.gstreamer.lowlevel.GlibAPI.GLIB_API;
24+
import static org.freedesktop.gstreamer.lowlevel.GstTagAPI.GSTTAG_API;
25+
import static org.freedesktop.gstreamer.lowlevel.GstTagListAPI.GSTTAGLIST_API;
2326

2427
import java.util.AbstractList;
2528
import java.util.HashMap;
@@ -28,15 +31,12 @@
2831
import java.util.Map;
2932
import java.util.concurrent.ConcurrentHashMap;
3033

31-
import com.sun.jna.Pointer;
32-
import com.sun.jna.ptr.PointerByReference;
33-
3434
import org.freedesktop.gstreamer.glib.GDate;
3535
import org.freedesktop.gstreamer.lowlevel.GType;
3636
import org.freedesktop.gstreamer.lowlevel.GstTagListAPI;
3737

38-
import static org.freedesktop.gstreamer.lowlevel.GstTagAPI.GSTTAG_API;
39-
import static org.freedesktop.gstreamer.lowlevel.GstTagListAPI.GSTTAGLIST_API;
38+
import com.sun.jna.Pointer;
39+
import com.sun.jna.ptr.PointerByReference;
4040

4141
/**
4242
* List of tags and values used to describe media metadata.
@@ -280,6 +280,17 @@ public Object get(TagList tl, String tag, int index) {
280280
return new GDate(value.getValue(), false, true);
281281
}
282282
});
283+
put(DateTime.GTYPE, new TagGetter() {
284+
public Object get(TagList tl, String tag, int index) {
285+
PointerByReference value = new PointerByReference();
286+
GSTTAGLIST_API.gst_tag_list_get_date_time_index(tl, tag, index, value);
287+
if (value.getValue() == null) {
288+
return null;
289+
}
290+
return new DateTime(value.getValue(), false, true);
291+
}
292+
});
293+
283294
}};
284295
static private final Map<String, GType> tagTypeMap = new ConcurrentHashMap<String, GType>();
285296
}

src/org/freedesktop/gstreamer/glib/GDate.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/*
2+
* Copyright (c) 2016 Christophe Lafolet
23
* Copyright (c) 2007 Wayne Meissner
34
*
45
* This file is part of gstreamer-java.
@@ -18,17 +19,15 @@
1819

1920
package org.freedesktop.gstreamer.glib;
2021

21-
import static org.freedesktop.gstreamer.lowlevel.GstDateTimeAPI.GSTDATETIME_API;
22-
2322
import org.freedesktop.gstreamer.lowlevel.GType;
2423
import org.freedesktop.gstreamer.lowlevel.GlibAPI;
2524
import org.freedesktop.gstreamer.lowlevel.NativeObject;
2625

2726
import com.sun.jna.Pointer;
2827

2928
public class GDate extends NativeObject {
30-
// it's by desing GstDate and not GDate see gstreamer source
31-
public static final String GTYPE_NAME = "GstDate";
29+
public static final String GTYPE_NAME = "GDate";
30+
public static final GType GTYPE = GType.valueOf(GTYPE_NAME);
3231

3332
public static GDate createInstance(int day, int month, int year) {
3433
return new GDate(GlibAPI.GLIB_API.g_date_new_dmy(day, month , year), false, true);
@@ -37,8 +36,6 @@ public static GDate createInstance(int julian_day) {
3736
return new GDate(GlibAPI.GLIB_API.g_date_new_julian(julian_day), false, true);
3837
}
3938

40-
public static final GType GTYPE = GSTDATETIME_API.gst_date_time_get_type();
41-
4239
public GDate(Initializer init) {
4340
super(init);
4441
}

src/org/freedesktop/gstreamer/lowlevel/GlibAPI.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
*/
1919

2020
package org.freedesktop.gstreamer.lowlevel;
21+
import java.util.Arrays;
2122
import java.util.HashMap;
23+
import java.util.List;
2224

2325
import org.freedesktop.gstreamer.lowlevel.annotations.CallerOwnsReturn;
2426

@@ -27,8 +29,6 @@
2729
import com.sun.jna.NativeLong;
2830
import com.sun.jna.Pointer;
2931
import com.sun.jna.ptr.PointerByReference;
30-
import java.util.Arrays;
31-
import java.util.List;
3232

3333
/**
3434
*
@@ -111,6 +111,7 @@ int g_timeout_add_full(int priority, int interval, GSourceFunc function,
111111
void g_source_remove(int id);
112112
void g_free(Pointer ptr);
113113

114+
// GType g_date_get_type();
114115
Pointer g_date_new();
115116
Pointer g_date_new_dmy(int day, int month, int year);
116117
Pointer g_date_new_julian(int julian_day);

src/org/freedesktop/gstreamer/lowlevel/GstTagListAPI.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,7 @@ interface TagMergeFunc extends GstCallback {
7373
boolean gst_tag_list_get_string_index(TagList list, String tag, int index, Pointer[] value);
7474
boolean gst_tag_list_get_date_index(TagList list, String tag, int index, PointerByReference value);
7575
boolean gst_tag_list_get_date_index(TagList list, String tag, int index, Pointer[] value);
76+
boolean gst_tag_list_get_date_time(TagList list, String tag, PointerByReference value);
77+
boolean gst_tag_list_get_date_time_index(TagList list, String tag, int index, PointerByReference value);
7678

7779
}

0 commit comments

Comments
 (0)