All pastes #546533 Raw Edit

Untitled

public c v1 · immutable
·published 2007-06-07 02:37 UTC
rendered paste body
#include <stdio.h>#include <alp/errormgr_base.h>#include <alp/traces.h>#include <alp/media_session.h>#include <glib.h>#include <memory.h>#include <malloc.h>#define ALP_MTL(str, ...) ALP_TM(TL(0, str, ## __VA_ARGS__))#define CHECK_RETURN(ret)          \    if (ret != ALP_STATUS_OK)                                \    {                                       \        ALP_MTL("**** Error: %s, file %s line %d", alp_err_get_string(ret, TRUE), __FILE__, __LINE__);\        return;\    }typedef struct{    int32_t obj_id;    AlpMMPropertyType type;    int32_t key;    AlpMMPropertyCode code;    void *value;    int32_t *size;    gchar *desc;}Property;gchar *map_file(gchar *url);void play_back(AlpMMSourceType type, const void* src_url);void get_property(Property prop);static void mycallback(const AlpMMSessionEvent *event, void *userdata);//gboolean has_audio();//gboolean has_video();//void get_format(AlpMMSourceID hSource, AlpMediaFileFomatType Format);AlpMMSessionID hSession;void alp_main(int argc, char *argv[]){    ALP_MTL("********** Audio Manager Test Begin ***********");    alp_status_t ret;    ret = alp_media_session_create(ALP_MM_SESSION_CLASS_PLAYBACK, &hSession);    CHECK_RETURN(ret);    gchar *pMemStream = map_file("/var/opt/alp/bundles/com.access.apps.mmtest/rsc/crazyfrog.3gp");    ALP_MTL("**** Memory Address: 0x%X", pMemStream);    play_back(ALP_MM_TYPE_MEMSTREAM, pMemStream);    //play_back(ALP_MM_TYPE_FILE, "/var/opt/alp/bundles/com.access.apps.mmtest/rsc/crazyfrog.3gp");        //alp_media_session_destroy(hSession);    ALP_MTL("********** Audio Manager Test End ***********");    }void play_back(AlpMMSourceType type, const void* url){    AlpMMSourceID hSource;    AlpMMDestID hDest_Audio;    AlpMMDestID hDest_Video;    alp_status_t ret;        ret = alp_media_session_register_callback(hSession, mycallback, NULL);    CHECK_RETURN(ret);    //alp_media_session_add_source doesn't support ALP_MM_TYPE_FILELIST, ALP_MM_TYPE_NETSTREAM ???    ret = alp_media_session_add_source(hSession, type, url, &hSource);    CHECK_RETURN(ret);    ret = alp_media_session_add_dest(hSession, LCDDEV, &hDest_Video);    CHECK_RETURN(ret);    //ret = alp_media_session_add_dest(hSession, DSPDEV, &hDest_Audio);    //CHECK_RETURN(ret);    ret = alp_media_session_finalize(hSession);    CHECK_RETURN(ret);    ret = alp_media_session_control(hSession, ALP_MM_SESSION_CTL_RUN);    CHECK_RETURN(ret);    gboolean bHasAudio = 0;    gboolean bHasVideo = 0;    AlpMediaFileFomatType iFormat = 000;    int32_t iLenFormat = sizeof(iFormat);    AlpMMRectangle rRect = {0, 0, 0, 0};    int32_t iSize = 0;    int64_t iEndTime = 0;    int32_t iLenEndTime = sizeof(iEndTime);    ALP_MTL("%d", iLenEndTime);    int32_t iVolume = 0;    gchar *sURL = (gchar*)malloc(64*sizeof(gchar));    int32_t iLenURL = 64*sizeof(gchar);    gboolean bAudioEnable = 0;    gboolean bVideoEnable = 0;    int32_t iFileSize = 0;    int32_t iRotate = 0;    int32_t iClass = 0;    AlpVideoCodecs iVideoCodec = 0;    Property propTable[] = {        //has_audio property is not for MP3 file?        {hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SOURCE_FILE_HAS_AUDIO, ALP_MM_PROPERTY_CODE_BOOL, (void*)&bHasAudio, &iSize, "has audio?"},        {hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SOURCE_FILE_HAS_VIDEO, ALP_MM_PROPERTY_CODE_BOOL, (void*)&bHasVideo, &iSize, "has video?"},        {hSource, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SOURCE_FILE_FORMAT, ALP_MM_PROPERTY_CODE_INT32, (void*)&iFormat, &iLenFormat, "file format?"}, //faild!!??        {hDest_Video, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_DEST_RECT, ALP_MM_PROPERTY_CODE_STRING, (void*)&rRect, &iSize, "rect?"},        {hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_END_TIME, ALP_MM_PROPERTY_CODE_INT64, (void*)&iEndTime, &iLenEndTime, "endtime?"}, //faild!!??        {hSource, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SOURCE_URL, ALP_MM_PROPERTY_CODE_STRING, (void*)sURL, &iLenURL, "source url?"}, //RAW or STRING??        //{hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_AUDIO_ENABLE, ALP_MM_PROPERTY_CODE_BOOL, (void*)&bAudioEnable, NULL, "Audio Enabled?"},//not completed??        {hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_VIDEO_ENABLE, ALP_MM_PROPERTY_CODE_BOOL, (void*)&bVideoEnable, &iSize, "Video Enabled?"},//not completed??        //{hSource, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SOURCE_SIZE, ALP_MM_PROPERTY_CODE_INT32, (void*)&iFileSize, &iSize, "Fize Size?"},//not completed??        //{hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_SESSION_CLASS, ALP_MM_PROPERTY_CODE_INT32, (void*)&iClass, &iSize, "Session Class?"},//No sessioin class property??        {hDest_Video, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_DEST_ROTATE, ALP_MM_PROPERTY_CODE_INT32, (void*)&iRotate, NULL, "Rotate?"}, //No ROTATE property!??        {hSession, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_VIDEO_CODEC_TYPE, ALP_MM_PROPERTY_CODE_INT32, (void*)&iVideoCodec, NULL, "Video Codec?"} //No ROTATE property!??        //{hDest_Audio, ALP_MM_PROPERTY_TYPE_DEFAULT, ALP_MM_SESSION_AUDIO_VOLUME, ALP_MM_PROPERTY_CODE_INT32, (void*)&iVolume, &iSize, "Volume?"} //failed??    };    unsigned int i = 0;    for (i=0; i<sizeof(propTable)/sizeof(propTable[0]); i++) {        get_property(propTable[i]);    }    ALP_MTL("Has Audio: %d", bHasAudio);    ALP_MTL("Has Video: %d", bHasVideo);    ALP_MTL("File Format: %d", iFormat);    ALP_MTL("Rect Height: %d", rRect.height);    ALP_MTL("Rect Width: %d", rRect.width);    ALP_MTL("Rect X: %d", rRect.x);    ALP_MTL("Rect Y: %d", rRect.y);    ALP_MTL("End Time: %lli", iEndTime);    ALP_MTL("Source URL: %s", sURL);    ALP_MTL("Source URL Length: %d", iLenURL); //The Lenght is same as allocated before??    free(sURL);    ALP_MTL("Audio Enabled: %d", bAudioEnable);    ALP_MTL("Video Enabled: %d", bVideoEnable);    ALP_MTL("File Size: %d", iFileSize);    ALP_MTL("Session Class: %d", iClass);    ALP_MTL("Rotate: %d", iRotate);    ALP_MTL("Video Codec: %d", iVideoCodec);    //ALP_MTL("Volume: %d", iVolume);}void get_property(Property prop){    alp_status_t ret;    ret = alp_media_property_get(prop.obj_id,                                 prop.type,                                 prop.key,                                 prop.code,                                 prop.value,                                 prop.size                                 );    CHECK_RETURN(ret);}static void mycallback(const AlpMMSessionEvent *event, void *userdata){    ALP_MTL("eventcause:%d, position:%lli, duration:%lli\n", event->event_cause, event->position, event->duration);        switch (event->event_code) {        case ALP_MM_SESSION_EVENT_STATE_CHANGED:{            ALP_MTL("state changed");            break;        }        case ALP_MM_SESSION_EVENT_WARNING:{            ALP_MTL("warning");            break;        }        case ALP_MM_SESSION_EVENT_ERROR:{            ALP_MTL("error");            break;        }        case ALP_MM_SESSION_EVENT_CURRENT_TIME:{            ALP_MTL("current time");            break;        }        case ALP_MM_SESSION_EVENT_DELETING:{            ALP_MTL("deleting");            break;        }        case ALP_MM_SESSION_EVENT_CUSTOM_BASE:{            ALP_MTL("custom base");            break;        }    }}#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#include<sys/mman.h>gchar *map_file(gchar *url){    int fd;    struct stat sb;    fd=open(url,O_RDONLY);     fstat(fd,&sb);     gchar *start = malloc(sb.st_size);    if (!start) {        ALP_MTL("no enough memory");        return NULL;    }    start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);    if (start == MAP_FAILED) {        ALP_MTL("**** Can not map file into memory");        return NULL;    }    else{            ALP_MTL("**** Memory Address 1: 0x%X", start);            return start;    }//munma(start,sb.st_size);//closed(fd);}/*void get_format(const AlpMMSourceID hSource, AlpMediaFileFomatType Format){    int32_t iSize = sizeof(Format);    alp_status_t ret = alp_media_property_get(hSource,                                               ALP_MM_PROPERTY_TYPE_DEFAULT,                                               ALP_MM_SOURCE_FILE_FORMAT,                                               ALP_MM_PROPERTY_CODE_INT32,                                               (void*)&Format,                                               &iSize);    CHECK_RETURN(ret);    ALP_MTL("%d", Format);}*//*gboolean has_video(){    gboolean bVideo = FALSE;    int32_t iSize = sizeof(bVideo);    alp_status_t ret = alp_media_property_get(hSession,                            ALP_MM_PROPERTY_TYPE_DEFAULT,                           ALP_MM_SOURCE_FILE_HAS_VIDEO,                           ALP_MM_PROPERTY_CODE_BOOL,                           (void*)&bVideo,                           &iSize);    CHECK_RETURN(ret);    ALP_MTL("HAS_VIDEO == %d", bVideo);    return bVideo;}gboolean has_audio(){    gboolean bAudio = FALSE;    int32_t iSize = sizeof(bAudio);    alp_status_t ret = alp_media_property_get(hSession,                            ALP_MM_PROPERTY_TYPE_DEFAULT,                           ALP_MM_SOURCE_FILE_HAS_AUDIO,                           ALP_MM_PROPERTY_CODE_BOOL,                           (void*)&bAudio,                           &iSize);    CHECK_RETURN(ret);    ALP_MTL("HAS_AUDIO == %d", bAudio);    return bAudio;}*///QUESTION1. How to playback Memory Stream?2. How many properties can be got by using alp_media_session_property_get()??3. ALP_MM_SOURCE_FILE_FORMAT property always be *0*... see code below please.4. The Source code defines two properties: ALP_MM_SESSION_DEST_ROTATE and ALP_MM_SESSION_DESTINATION_ROTATE, are they same!?OUTPUT 1: PLAYING MEMORY STREAM~ # root: ********** Audio Manager Test Begin ***********root: -----------begin init gstreamer library------root: pSessionID :135538520root: outSession : 135538520root: **** Memory Address 1: 0x40EE3000~ # root: ********** Audio Manager Test Begin ***********root: -----------begin init gstreamer library------root: pSessionID :135538520root: outSession : 135538520root: **** Memory Address 1: 0x40EE3000root: **** Memory Address: 0x40EE3000root: ALP_DEBUG: successed make element type:memsrc, name:memory_srcroot: ALP_DEBUG: successed make element type:fbsink, name:videosinkroot: MM_INFO:begin autoplugroot: ALP_DEBUG: successed make element type:pipeline, name:pipelineroot: ALP_DEBUG: successed make element type:typefind, name:typefindroot: MM_INFO:Setting pipeline to PAUSED ...root: MM_INFO:statechange:0root: ERROR: err in file /home/buildslave/builds/src/platform/libraries/media_session/media_playback.c line 2302, err:0x45030000root: #######set the pipeline's state to nullroot: #######set the element:memsrc's state to nullroot: #######set the element:typefind's state to nullroot: #######free the pipelineroot: trace: file /home/buildslave/builds/src/platform/libraries/media_session/media_playbackbase.c line 651, error num:0x45030000root: trace: file /home/buildslave/builds/src/platform/libraries/media_session/media_session.c line 386, error num:0x45030000root: **** Error: Unknown error (0x45030000), file src/main.c line 84root: **** END OF PLAYING MEMORY STREAM!root: ********** Audio Manager Test End ***********======================================================================================================================================OUTPUT 2 PLAYTING FILE~ # root: ********** Audio Manager Test Begin ***********root: -----------begin init gstreamer library------root: pSessionID :135538520root: outSession : 135538520root: **** Memory Address 1: 0x40EE3000root: **** Memory Address: 0x40EE3000root: ALP_DEBUG: successed make element type:filesrc, name:file_srcroot: ALP_DEBUG: successed make element type:fbsink, name:videosinkroot: MM_INFO:begin autoplugroot: ALP_DEBUG: successed make element type:pipeline, name:pipelineroot: ALP_DEBUG: successed make element type:typefind, name:typefindroot: MM_INFO:Setting pipeline to PAUSED ...root: INFO:try to link element :typefind 's padroot: try to find compatible element for type:application/x-3gproot: find compatible elememt:qtdemuxroot: INFO:trying to process qtdemuxroot: ALP_DEBUG: successed make element type:qtdemux, name:qtdemux0root: INFO:linked element qtdemux0 on pad typefind:srcroot: INFO:successed add element:qtdemux0root: MM_INFO:statechange:1root: MM_INFO:pipeline is PREROLLED...root: INFO:try to link element :qtdemux0 's padroot: try to find compatible element for type:video/x-h263root: find compatible elememt:oki_h263_decroot: demux video src caps:video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)10/1root: get rect:width:176, height :144root: INFO:element qtdemux0 is a demuxr, inserting a queueroot: ALP_DEBUG: successed make element type:queue, name:queue0root: INFO:trying to process oki_h263_decroot: ALP_DEBUG: successed make element type:oki_h263_dec, name:oki_h263_dec0root: INFO:linked element oki_h263_dec0 on pad queue0:srcroot: INFO:successed add element:oki_h263_dec0root: INFO:try to link element :oki_h263_dec0 's padroot: INFO:find a raw src, type:video/x-raw-yuvroot: MEDIA_ENGINE:find dest, try to linkroot: MEDIA_ENGINE:begin link sinkroot: MEDIA_ENGINE:link padroot: MEDIA_ENGINE:set stateroot: MEDIA_ENGINE:End link sinkroot: INFO:try to link element :qtdemux0 's padroot: try to find compatible element for type:audio/AMRroot: find compatible elememt:oki_amrnb_decroot: INFO:element qtdemux0 is a demuxr, inserting a queueroot: ALP_DEBUG: successed make element type:queue, name:queue1root: INFO:trying to process oki_amrnb_decroot: ALP_DEBUG: successed make element type:oki_amrnb_dec, name:oki_amrnb_dec0root: INFO:linked element oki_amrnb_dec0 on pad queue1:srcroot: INFO:successed add element:oki_amrnb_dec0root: INFO:try to link element :oki_amrnb_dec0 's padroot: INFO:find a raw src, type:audio/x-raw-introot: caps: video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)10/1root: oki_amrnb_dec handling tag eventroot: oki_amrnb_dec handling newsegment eventroot: (<unknown>:1312): GStreamer-CRITICAL **: gst_pad_get_parent_element: assertion `GST_IS_PAD (pad)' failedroot: (<unknown>:1312): GStreamer-CRITICAL **: gst_object_unref: assertion `object != NULL' failedroot: filesrc-->typefind-->qtdemux-->queue-->oki_amrnb_decroot:                             |->queue-->oki_h263_dec-->fbsinkroot: MM_INFO:auto plug successedroot: MEDIA_ENGINE:pipeline state is pause, begin playing ...root: fbopen:open errorroot: Cannot open fb device.root: 8root: ERROR: error occur in file /home/buildslave/builds/src/platform/libraries/media_session/media_playback.c line 2386, error num:0x45050000root: trace: file /home/buildslave/builds/src/platform/libraries/media_session/media_playbackbase.c line 744, error num:0x45050000root: **** Error: Unknown error (0x45050000), file src/main.c line 164root: ERROR: error occur in file /home/buildslave/builds/src/platform/libraries/media_session/media_playbackbase.c line 778, error num:0x45050000root: **** Error: Unknown error (0x45050000), file src/main.c line 164root: Has Audio: 1root: Has Video: 1root: File Format: 0root: Rect Height: 144root: Rect Width: 176root: Rect X: 0root: Rect Y: 0root: End Time: 0root: Source URL: /var/opt/alp/bundles/com.access.apps.mmtest/rsc/crazyfrog.3gproot: Source URL Length: 64root: Audio Enabled: 0root: Video Enabled: 0root: File Size: 0root: Session Class: 0root: Rotate: 0root: Video Codec: 0root: ********** Audio Manager Test End ***********root: wy:176, wuv:88, hy:144, huv:72, root: ystride:176, uvstride:88, ysize:25344, uvsize:6336root: downroot: downroot: downroot: downroot: downroot: downroot: Media session property get plugin, value: 0root: down