fix coverart

This commit is contained in:
TangoCash
2017-10-27 23:38:20 +02:00
parent cf81628998
commit 5509c8c0c6
2 changed files with 19 additions and 11 deletions

View File

@@ -239,18 +239,23 @@ GstBusSyncReply Gst_bus_call(GstBus * bus, GstMessage *msg, gpointer user_data)
if ( gv_image ) if ( gv_image )
{ {
GstBuffer *buf_image; GstBuffer *buf_image;
buf_image = gst_value_get_buffer (gv_image); GstSample *sample;
sample = (GstSample *)g_value_get_boxed(gv_image);
buf_image = gst_sample_get_buffer(sample);
int fd = open("/tmp/.id3coverart", O_CREAT|O_WRONLY|O_TRUNC, 0644); int fd = open("/tmp/.id3coverart", O_CREAT|O_WRONLY|O_TRUNC, 0644);
if(fd >= 0) if (fd >= 0)
{ {
GstMapInfo Info; guint8 *data;
gst_buffer_map(buf_image, &Info,(GstMapFlags)( GST_MAP_READ)); gsize size;
int ret = write(fd, Info.data, Info.size); GstMapInfo map;
gst_buffer_map(buf_image, &map, GST_MAP_READ);
data = map.data;
size = map.size;
int ret = write(fd, data, size);
gst_buffer_unmap(buf_image, &map);
close(fd); close(fd);
gst_buffer_unmap(buf_image, &Info); lt_info_c("%s:%s - /tmp/.id3coverart %d bytes written ", FILENAME, __FUNCTION__, ret);
lt_info_c( "%s:%s - GST_MESSAGE_INFO: cPlayback::state /tmp/.id3coverart %d bytes written\n", FILENAME, __FUNCTION__, ret);
} }
//FIXME: how shall playback handle this event???
} }
gst_tag_list_free(tags); gst_tag_list_free(tags);
lt_debug_c( "%s:%s - GST_MESSAGE_INFO: update info tags\n", FILENAME, __FUNCTION__); //FIXME: how shall playback handle this event??? lt_debug_c( "%s:%s - GST_MESSAGE_INFO: update info tags\n", FILENAME, __FUNCTION__); //FIXME: how shall playback handle this event???
@@ -751,10 +756,13 @@ bool cPlayback::GetPosition(int &position, int &duration)
if (audioSink || videoSink) if (audioSink || videoSink)
{ {
g_signal_emit_by_name(audioSink ? audioSink : videoSink, "get-decoder-time", &pts); g_signal_emit_by_name(audioSink ? audioSink : videoSink, "get-decoder-time", &pts);
if (!GST_CLOCK_TIME_IS_VALID(pts)){ if (!GST_CLOCK_TIME_IS_VALID(pts))
{
lt_info( "%s - %d failed\n", __FUNCTION__, __LINE__); lt_info( "%s - %d failed\n", __FUNCTION__, __LINE__);
} }
}else{ }
else
{
if(!gst_element_query_position(m_gst_playbin, fmt, &pts)) if(!gst_element_query_position(m_gst_playbin, fmt, &pts))
lt_info( "%s - %d failed\n", __FUNCTION__, __LINE__); lt_info( "%s - %d failed\n", __FUNCTION__, __LINE__);
} }

View File

@@ -758,7 +758,7 @@ bool Input::GetMetadata(std::vector<std::string> &keys, std::vector<std::string>
for(unsigned int i = 0; i < avfc->nb_streams; i++) { for(unsigned int i = 0; i < avfc->nb_streams; i++) {
if (avfc->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) { if (avfc->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) {
AVPacket *pkt = &avfc->streams[i]->attached_pic; AVPacket *pkt = &avfc->streams[i]->attached_pic;
FILE *cover_art = fopen("/tmp/cover.jpg", "wb"); FILE *cover_art = fopen("/tmp/.id3coverart", "wb");
if (cover_art) { if (cover_art) {
fwrite(pkt->data, pkt->size, 1, cover_art); fwrite(pkt->data, pkt->size, 1, cover_art);
fclose(cover_art); fclose(cover_art);