⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediainfogetnew.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************************************
*****************************************************************************************************
   COPYRIGHT (c)   2007 BY ROCK-CHIP FUZHOU
    --  ALL RIGHTS RESERVED  --

File Name: MediaInfoGet.c
Author:   Peng Huacheng
Created:  07-09-20
Modified:
Revision:
****************************************************************************************************
****************************************************************************************************/
#if ((defined(BOARD)) || defined(ROCK_FS))

#include <stdio.h>
#include <stdlib.h>
#include "include.h"
#include "System.h"

#ifdef  _MEIDA_SORT_NEW

#include "..\System\MediaSortNew\MediaSortGloableNew.h"
#include "MediaInfoGetStructNew.h"
#include "..\PlaylistControl\MediaPlaylistGloableNew.h"

extern void GetLongFileName(UINT16 *lfn);
extern void GetTimeUnicodeStr(FS_FILE *hFile, UINT16* str);
extern SYSCONFIG  gInitSysConfig;
UINT16 SearchIndexBuffer[1024];  // 所有文件搜索索引buffer, 共可以满足1K搜索量
UINT16 SearchPlayBuffer[1024]; // 搜索音乐播放buffer

/*----------------------------------------------------------------------
Name  :  GetALLMusicInfo
Desc  :  根据索引信息获取音乐文件详细信息
Params:  pFileInfo:媒体库文件存储信息   uiIndexID:文件检索号
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetSaveFileInfo(FILE_SAVE_STRUCT *pFileInfo, UINT16 uiIndexID)
{
    FS_FILE* fFile = NULL;

    fFile = FS_fopen(FileInfoSavePath, "r");
    if (fFile == NULL)
        return ;
    FS_fseek(fFile, uiIndexID*sizeof(FILE_SAVE_STRUCT), FS_SEEK_SET); //
    FS_fread(pFileInfo, sizeof(FILE_SAVE_STRUCT), 1, fFile);
    FS_fclose(fFile);
    fFile = NULL;

}


/*----------------------------------------------------------------------
Name  :  GetSortInfo
Desc  :  获取排序索引信息
Params:  pSortIndex:排序索引信息  uiID:排序号   SortAddrOffset:排序信息在保存文件中的偏移量
Return:
Author:  phc
Date  :  07-12-03
----------------------------------------------------------------------*/
void GetSortInfo(MEDIA_SORT_INFO_STRUCT *pSortIndex, UINT16 uiID, UINT32 SortAddrOffset)
{
    FS_FILE* fFile = NULL;

    fFile = FS_fopen(SortInfoPath, "r");//FileInfoSavePath
    if (fFile == NULL)
        return ;
    FS_fseek(fFile, SortAddrOffset + (UINT32)uiID*sizeof(MEDIA_SORT_INFO_STRUCT), FS_SEEK_SET); //
    FS_fread(pSortIndex, sizeof(MEDIA_SORT_INFO_STRUCT), 1, fFile);
    FS_fclose(fFile);
    fFile = NULL;

}


/*----------------------------------------------------------------------
Name  :  GetMediaALLMusicInfo
Desc  :  获取所有音乐排序文件信息
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号,在这里无用
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaALLMusicInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    MEDIA_SORT_INFO_STRUCT SortIndex;
    FILE_SAVE_STRUCT FileInfo;

    UINT16 TimeStr[9] = {'0', '0', ':', '0', '0', ':', '0', '0', '\0'};
//    FS_FILE *fFile = NULL;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, All_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.LongFileName, CHAR_NUM_PER_FILE_NAME*sizeof(UINT16)); // 保存的长文件名
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);

#if 1
    RKmemcpy(pMediaInfo->ListName3, FileInfo.Time, 8*sizeof(UINT16)); // 提取歌曲播放时间
#else


    RKstrcat(FileInfo.Path, FileInfo.Name);
    fFile = RKFSFileOpen(FileInfo.Path, "r");
    if (fFile != NULL)
    {
        GetTimeUnicodeStr(fFile, TimeStr);
        RKmemcpy(pMediaInfo->ListName3, TimeStr, sizeof(TimeStr)); // 获取音乐播放时间
        RKFSFileClose(fFile);
        fFile = NULL;
    }
#endif

}


/*----------------------------------------------------------------------
Name  :  GetMediaTitleInfo
Desc  :  获取所有标题排序文件信息
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号,在这里无用
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaTitleInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, TITLE_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.ID3Title, ID3_SAVE_CHAR_NUM*sizeof(UINT16));
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息
    //RKmemcpy(pMediaInfo->ListName3, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌曲播放时间

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);
}

/*----------------------------------------------------------------------
Name  :  GetMediaArtistSumInfo
Desc  :  获取所有艺术家的排序信息
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号,在这里无用
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaArtistSumInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;

    uiID += uiBaseID;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, ARTIST_SUM_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16));
    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);
    pMediaInfo->ChildItemNum = SortIndex.ItemNum;
    pMediaInfo->SorIndex = SortIndex.IndexID;
}

/*----------------------------------------------------------------------
Name  :  GetMediaArtistMusicInfo
Desc  :  获取某个艺术家内的音乐文件
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaArtistMusicInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;
    UINT16 TimeStr[9] = {'0', '0', ':', '0', '0', ':', '0', '0', '\0'};

    uiID += uiBaseID;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, ARTIST_IN_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.LongFileName, CHAR_NUM_PER_FILE_NAME*sizeof(UINT16));
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息
    //RKmemcpy(pMediaInfo->ListName3, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌曲播放时间

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);
    //pMediaInfo->ChildItemNum = SortIndex.ItemNum;
    pMediaInfo->SorIndex = SortIndex.IndexID;

#if 1
    RKmemcpy(pMediaInfo->ListName3, FileInfo.Time, 8*sizeof(UINT16)); // 提取歌曲播放时间
#else


    RKstrcat(FileInfo.Path, FileInfo.Name);
    fFile = RKFSFileOpen(FileInfo.Path, "r");
    if (fFile != NULL)
    {
        GetTimeUnicodeStr(fFile, TimeStr);
        RKmemcpy(pMediaInfo->ListName3, TimeStr, sizeof(TimeStr)); // 获取音乐播放时间
        RKFSFileClose(fFile);
        fFile = NULL;
    }
#endif
}

/*----------------------------------------------------------------------
Name  :  GetMediaAlbumSumInfo
Desc  :  获取所有专辑信息
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号,在这里无用
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaAlbumSumInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;

    uiID += uiBaseID;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, ALBUM_SUM_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.ID3Album, ID3_SAVE_CHAR_NUM*sizeof(UINT16));
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);

    pMediaInfo->ChildItemNum = SortIndex.ItemNum;
    pMediaInfo->SorIndex = SortIndex.IndexID;
}

/*----------------------------------------------------------------------
Name  :  GetMediaAlbumtMusicInfo
Desc  :  获取某个专辑内的音乐文件
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaAlbumMusicInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;
    UINT16 TimeStr[9] = {'0', '0', ':', '0', '0', ':', '0', '0', '\0'};

    uiID += uiBaseID;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, ALBUM_IN_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.LongFileName, CHAR_NUM_PER_FILE_NAME*sizeof(UINT16));
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息
    //RKmemcpy(pMediaInfo->ListName3, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌曲播放时间

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);

    //pMediaInfo->ChildItemNum = SortIndex.ItemNum;
    pMediaInfo->SorIndex = SortIndex.IndexID;

#if 1
    RKmemcpy(pMediaInfo->ListName3, FileInfo.Time, 8*sizeof(UINT16)); // 提取歌曲播放时间
#else


    RKstrcat(FileInfo.Path, FileInfo.Name);
    fFile = RKFSFileOpen(FileInfo.Path, "r");
    if (fFile != NULL)
    {
        GetTimeUnicodeStr(fFile, TimeStr);
        RKmemcpy(pMediaInfo->ListName3, TimeStr, sizeof(TimeStr)); // 获取音乐播放时间
        RKFSFileClose(fFile);
        fFile = NULL;
    }
#endif
}


/*----------------------------------------------------------------------
Name  :  GetMediaGenreSumInfo
Desc  :  获取所有专辑信息
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号,在这里无用
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaGenreSumInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;

    uiID += uiBaseID;

    RKmemset(&SortIndex, 0, sizeof(MEDIA_SORT_INFO_STRUCT));
    RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
    GetSortInfo(&SortIndex, uiID, GENRE_SUM_SORT_ADDR);
    GetSaveFileInfo(&FileInfo, SortIndex.FileSearchID);

    RKmemcpy(pMediaInfo->ListName1, FileInfo.Genre, ID3_SAVE_CHAR_NUM*sizeof(UINT16));
    RKmemcpy(pMediaInfo->ListName2, FileInfo.ID3Artist, ID3_SAVE_CHAR_NUM*sizeof(UINT16)); // 提取歌手信息

    RKmemcpy(pMediaInfo->Name, FileInfo.Name, 11);
    RKmemcpy(pMediaInfo->Path, FileInfo.Path, FS_MAX_PATH_LEN);

    pMediaInfo->ChildItemNum = SortIndex.ItemNum;
    pMediaInfo->SorIndex = SortIndex.IndexID;
}

/*----------------------------------------------------------------------
Name  :  GetMediaGenreMusicInfo
Desc  :  获取某个专辑内的音乐文件
Params:  pMediaInfo:文件列出信息 uiID:文件排序号  uiBaseID:排序基号
Return:
Author:  phc
Date  :  07-11-27
----------------------------------------------------------------------*/
void GetMediaGenreMusicInfo(FILE_MEDIAINFO_STRUCT *pMediaInfo, UINT16 uiID, UINT16 uiBaseID)
{
    FILE_SAVE_STRUCT FileInfo;
    MEDIA_SORT_INFO_STRUCT SortIndex;
    UINT16 TimeStr[9] = {'0', '0', ':', '0', '0', ':', '0', '0', '\0'};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -