mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-libstb-hal.git
synced 2025-08-26 15:02:43 +02:00
save cover if available, report avfc to streaminfo2
Origin commit data
------------------
Branch: master
Commit: 04ef6adff5
Author: TangoCash <eric@loxat.de>
Date: 2020-09-16 (Wed, 16 Sep 2020)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -3287,6 +3287,52 @@ static int container_ffmpeg_get_metadata(Context_t *context, char ***p)
|
||||
*pp++ = NULL;
|
||||
*pp = NULL;
|
||||
|
||||
// find the first attached picture, if available
|
||||
unlink("/tmp/.id3coverart");
|
||||
for(unsigned int i = 0; i < avContextTab[0]->nb_streams; i++) {
|
||||
if (avContextTab[0]->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) {
|
||||
AVPacket *pkt = NULL;
|
||||
pkt = av_packet_clone(&avContextTab[0]->streams[i]->attached_pic);
|
||||
FILE *cover_art = fopen("/tmp/.id3coverart", "wb");
|
||||
if (cover_art) {
|
||||
fwrite(pkt->data, pkt->size, 1, cover_art);
|
||||
fclose(cover_art);
|
||||
}
|
||||
av_packet_free(&pkt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return cERR_CONTAINER_FFMPEG_NO_ERROR;
|
||||
}
|
||||
|
||||
static int container_ffmpeg_av_context(Context_t *context, AVFormatContext *ext_avContext)
|
||||
{
|
||||
if (!context)
|
||||
{
|
||||
fprintf(stderr, "BUG %s:%d\n", __func__, __LINE__);
|
||||
return cERR_CONTAINER_FFMPEG_ERR;
|
||||
}
|
||||
if (avContextTab[0] != NULL)
|
||||
{
|
||||
getMutex(__FILE__, __FUNCTION__, __LINE__);
|
||||
ext_avContext->streams = avContextTab[0]->streams;
|
||||
ext_avContext->nb_streams = avContextTab[0]->nb_streams;
|
||||
releaseMutex(__FILE__, __FUNCTION__, __LINE__);
|
||||
}
|
||||
else if ((avContextTab[0] == NULL) && (avContextTab[1] != NULL))
|
||||
{
|
||||
getMutex(__FILE__, __FUNCTION__, __LINE__);
|
||||
ext_avContext->streams = avContextTab[1]->streams;
|
||||
ext_avContext->nb_streams = avContextTab[1]->nb_streams;
|
||||
releaseMutex(__FILE__, __FUNCTION__, __LINE__);
|
||||
}
|
||||
else
|
||||
{
|
||||
ext_avContext->streams = NULL;
|
||||
ext_avContext->nb_streams = NULL;
|
||||
}
|
||||
|
||||
return cERR_CONTAINER_FFMPEG_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -3383,6 +3429,11 @@ static int32_t Command(Context_t *context, ContainerCmd_t command, void *argumen
|
||||
ret = container_ffmpeg_get_metadata(context, (char ***)argument);
|
||||
break;
|
||||
}
|
||||
case CONTAINER_GET_AVFCONTEXT:
|
||||
{
|
||||
ret = container_ffmpeg_av_context(context, (AVFormatContext *)argument);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ffmpeg_err("ContainerCmd %d not supported!\n", command);
|
||||
ret = cERR_CONTAINER_FFMPEG_ERR;
|
||||
|
@@ -25,7 +25,8 @@ typedef enum
|
||||
CONTAINER_GET_BUFFER_SIZE,
|
||||
CONTAINER_GET_BUFFER_STATUS,
|
||||
CONTAINER_STOP_BUFFER,
|
||||
CONTAINER_GET_METADATA
|
||||
CONTAINER_GET_METADATA,
|
||||
CONTAINER_GET_AVFCONTEXT
|
||||
} ContainerCmd_t;
|
||||
|
||||
struct Context_s;
|
||||
|
Reference in New Issue
Block a user