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

📄 lqt_qtvr.c

📁 这个库实现了录象功能
💻 C
📖 第 1 页 / 共 2 页
字号:
        file->qtvr_node[0].obji.defaultTilt = deftilt;    }    else {        file->moov.udta.navg.startHPan = mintilt;        file->moov.udta.navg.endHPan = maxtilt;        file->moov.udta.navg.initialHPan = deftilt;    }}/* FOV  "Zoom" */void lqt_qtvr_get_fov(quicktime_t  *file, float *minfov, float *maxfov, float *deffov){    if (lqt_qtvr_get_qtvr_track(file) >= 0 ) {        if (lqt_qtvr_get_object_track(file) >= 0) {            if (minfov != NULL ) *minfov = file->qtvr_node[0].obji.minFOV;            if (maxfov != NULL ) *maxfov = file->qtvr_node[0].obji.FOV;            if (deffov != NULL ) *deffov = file->qtvr_node[0].obji.defaultFOV;        }        else if (lqt_qtvr_get_panorama_track(file) >= 0) {            if (minfov != NULL) *minfov = file->qtvr_node[0].pdat.minFOV;            if (maxfov != NULL) *maxfov = file->qtvr_node[0].pdat.maxFOV;            if (deffov != NULL) *deffov = file->qtvr_node[0].pdat.defaultFOV;        }    }    else {        if (lqt_is_qtvr(file) == QTVR_OBJ) {            if (minfov != NULL ) *minfov = file->moov.udta.navg.fieldofview;            if (maxfov != NULL ) *maxfov = file->moov.udta.navg.fieldofview;            if (deffov != NULL ) *deffov = file->moov.udta.navg.fieldofview;        }        else if (lqt_is_qtvr(file) == QTVR_PAN) {            if (minfov != NULL ) *minfov = file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.MinZoom;            if (maxfov != NULL ) *maxfov = file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.MaxZoom;            if (deffov != NULL ) *deffov = file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.MinZoom;        }    }}void lqt_qtvr_set_fov(quicktime_t  *file, float minfov, float maxfov, float deffov){    if (lqt_qtvr_get_object_track(file) >= 0) {        file->qtvr_node[0].obji.minFOV = minfov;        file->qtvr_node[0].obji.FOV = maxfov;        file->qtvr_node[0].obji.defaultFOV = deffov;    }    else {        file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.MinZoom = minfov;        file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.MaxZoom = maxfov;    }}/* frame to start at */int lqt_qtvr_get_initial_position(quicktime_t  *file){    if (lqt_qtvr_get_object_track(file) >= 0) {        return deg2frame(file, file->qtvr_node[0].obji.defaultPan, file->qtvr_node[0].obji.defaultTilt);    }    else {        return deg2frame(file, file->moov.udta.navg.initialHPan, file->moov.udta.navg.initialVPan);    }    return -1;}/* movietype */int lqt_qtvr_get_movietype(quicktime_t  *file){    if (lqt_qtvr_get_object_track(file) >= 0) {        return file->qtvr_node[0].obji.movieType;    }    else {        return file->moov.udta.navg.movietype;    }}int lqt_qtvr_set_movietype(quicktime_t  *file, int movietype){    if (movietype == QTVR_GRABBER_SCROLLER_UI ||         movietype == QTVR_OLD_JOYSTICK_UI ||         movietype == QTVR_JOYSTICK_UI ||         movietype == QTVR_GRABBER_UI ||         movietype == QTVR_ABSOLUTE_UI) {        if (lqt_qtvr_get_object_track(file) >= 0) {            file->qtvr_node[0].obji.movieType = movietype;        }        else {            file->moov.udta.navg.movietype = movietype;        }        return 0;    }    return -1;}/* Set number of rows */int lqt_qtvr_set_rows(quicktime_t  *file, int rows){    if (rows > 0) {        if (lqt_is_qtvr(file) == QTVR_OBJ) {            file->qtvr_node[0].obji.rows = rows;            return 0;        }        else if (lqt_is_qtvr(file) == QTVR_PAN) {            file->qtvr_node[0].pdat.imageNumFramesX = rows;            return 0;        }    }        return -1;}/* Set number of columns */int lqt_qtvr_set_columns(quicktime_t  *file, int columns){    if (columns > 0) {        if (lqt_is_qtvr(file) == QTVR_OBJ) {            file->qtvr_node[0].obji.columns = columns;            return 0;        }        else if (lqt_is_qtvr(file) == QTVR_PAN) {            file->qtvr_node[0].pdat.imageNumFramesY = columns;            return 0;        }    }        return -1;}/* dimensions of the player window */int lqt_qtvr_get_display_width(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        return quicktime_video_width(file, 0);    }    else if (lqt_is_qtvr(file) == QTVR_PAN) {        return (int)file->moov.trak[lqt_qtvr_get_panorama_track(file)]->tkhd.track_width;    }    return -1;}int lqt_qtvr_set_display_width(quicktime_t  *file, int width){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        file->moov.trak[lqt_qtvr_get_qtvr_track(file)]->tkhd.track_width = (float)width;        file->moov.trak[lqt_qtvr_get_object_track(file)]->tkhd.track_width = (float)width;    }    else if (lqt_is_qtvr(file) == QTVR_PAN) {        file->moov.trak[lqt_qtvr_get_panorama_track(file)]->tkhd.track_width = (float)width;    }    return -1;}int lqt_qtvr_get_display_height(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        return quicktime_video_height(file, 0);    }    else if (lqt_is_qtvr(file) == QTVR_PAN) {        return (int)file->moov.trak[lqt_qtvr_get_panorama_track(file)]->tkhd.track_height;    }    return -1;}int lqt_qtvr_set_display_height(quicktime_t *file, int height){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        file->moov.trak[lqt_qtvr_get_qtvr_track(file)]->tkhd.track_height = height;        file->moov.trak[lqt_qtvr_get_object_track(file)]->tkhd.track_height = height;    }    else if (lqt_is_qtvr(file) == QTVR_PAN) {        file->moov.trak[lqt_qtvr_get_panorama_track(file)]->tkhd.track_height = height;    }    return -1;}/* get depth */int lqt_qtvr_get_depth(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        return quicktime_video_depth(file, 0);    }    else if (lqt_is_qtvr(file) == QTVR_PAN) { // add v2        return (int)file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.SDepth;    }    return -1;}/* get/set full pano dimensions */int lqt_qtvr_get_width(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        return quicktime_video_width(file, 0);    }    else    if (lqt_is_qtvr(file) == QTVR_PAN) {        if (lqt_qtvr_get_qtvr_track(file) >= 0) {            if (lqt_qtvr_get_panotype(file) == QTVR_PANO_HORZ) {                 return file->qtvr_node[0].pdat.imageSizeX;            }            else {                return file->qtvr_node[0].pdat.imageSizeY;            }        }        else {            return file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.SWidth;        }    }    return -1;}int lqt_qtvr_get_height(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_OBJ) {        return quicktime_video_height(file, 0);    }    else if (lqt_is_qtvr(file) == QTVR_PAN) {        if (lqt_qtvr_get_qtvr_track(file) >= 0) {            if (lqt_qtvr_get_panotype(file) == QTVR_PANO_HORZ) {                 return file->qtvr_node[0].pdat.imageSizeY;            }            else {                return file->qtvr_node[0].pdat.imageSizeX;            }        }        else {            return file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.SHeight;        }    }    return -1;}/* Panorama specific */int lqt_qtvr_get_panorama_track(quicktime_t  *file){    int i;    for(i = 0; i < file->moov.total_tracks; i++) {        if (quicktime_match_32(file->moov.trak[i]->mdia.hdlr.component_subtype, "STpn")) {            return i;        }        if (quicktime_match_32(file->moov.trak[i]->mdia.hdlr.component_subtype, "pano")) {            return i;        }    }    return -1;}int lqt_qtvr_get_panotype(quicktime_t  *file){    if (lqt_is_qtvr(file) == QTVR_PAN) {        if (lqt_qtvr_get_qtvr_track(file) >= 0 &&            quicktime_match_32(file->qtvr_node[0].pdat.panoType, "hcyl")) {            return QTVR_PANO_HORZ;        }        return QTVR_PANO_VERT;    }    return -1;}/* object specific */int lqt_qtvr_get_object_track(quicktime_t  *file){    int i;    for(i = 0; i < file->moov.total_tracks; i++) {        if (quicktime_match_32(file->moov.trak[i]->mdia.hdlr.component_subtype, "obje")) {            return i;        }    }    return -1;}/* get qtvr track */int lqt_qtvr_get_qtvr_track(quicktime_t  *file){    int i;    for(i = 0; i < file->moov.total_tracks; i++) {        if (quicktime_match_32(file->moov.trak[i]->mdia.hdlr.component_subtype, "qtvr")) {            return i;        }    }    return -1;}/* set/get image track */int lqt_qtvr_set_image_track(quicktime_t  *file, int track){    if (lqt_qtvr_get_object_track(file) >= 0) {        int otrack = lqt_qtvr_get_object_track(file);        if (otrack != -1 && file->total_vtracks > track) {	                file->moov.trak[otrack]->tref.references[0].tracks[0] =                  file->vtracks[track].track->tkhd.track_id;            return 0;        }    }    else {        int ptrack = lqt_qtvr_get_panorama_track(file);        if (ptrack != -1 && file->total_vtracks > track) {            /* reset the prevous vtracks flags if required */            if (file->moov.trak[ptrack]->mdia.minf.stbl.stsd.table->pano.STrack != 0)                 file->moov.trak[lqt_track_from_id(file, file->moov.trak[ptrack]->mdia.minf.stbl.stsd.table->pano.STrack)]->tkhd.flags = 15;            file->moov.trak[ptrack]->mdia.minf.stbl.stsd.table->pano.STrack = file->vtracks[track].track->tkhd.track_id;            file->vtracks[track].track->tkhd.flags = 14; /* deactivate this vtrack */            return 0;        }    }    return -1;}// This will not work correctly with movies that contain panos and obj movies in the same file// possibly replace with _get_object_image_track() and _get_pano_image_track()int lqt_qtvr_get_image_track(quicktime_t  *file){    if (lqt_qtvr_get_qtvr_track(file) >= 0) {        if (lqt_qtvr_get_object_track(file) != -1) {            return file->moov.trak[lqt_qtvr_get_object_track(file)]->tref.references[0].tracks[0];        }         else if (lqt_qtvr_get_panorama_track(file) != -1) {            return file->qtvr_node[0].pdat.imageRefTrackIndex;        }    }    else {        if (lqt_qtvr_get_panorama_track(file) != -1) {            return file->moov.trak[lqt_qtvr_get_panorama_track(file)]->mdia.minf.stbl.stsd.table->pano.STrack;        }    }    return -1;}/* get track by track id */int lqt_track_from_id(quicktime_t *file, int track_id){    int i;    for(i = 0; i < file->moov.total_tracks; i++) {        if (file->moov.trak[i]->tkhd.track_id == track_id ) return i;    }    return -1;}

⌨️ 快捷键说明

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