- if(nested_edl)
- {
-// Convert position to nested EDL rate
-if(debug) printf("VEdit::get_nested_asset %d\n",
-__LINE__);
- int64_t pos = *source_position;
- if(direction == PLAY_REVERSE && pos > 0) --pos;
- *source_position = Units::to_int64((double)pos *
- nested_edl->session->frame_rate /
- edl->session->frame_rate);
- PlayableTracks *playable_tracks = new PlayableTracks(
- nested_edl,
- *source_position,
- direction,
- TRACK_VIDEO,
- 1);
- if(playable_tracks->size())
- {
- VTrack *nested_track = (VTrack*)playable_tracks->get(0);
- VEdit* nested_edit = (VEdit*)nested_track->edits->editof(
- *source_position,
- direction,
- 1);
- if(nested_edit)
- {
- result = nested_edit->get_nested_asset(
- source_position,
- *source_position,
- direction);
- }
- }
-
- delete playable_tracks;
-if(debug) printf("VEdit::get_nested_asset %d\n",
-__LINE__);
- return result;
- }
- else
- {
-// Convert position to asset rate
-if(debug) printf("VEdit::get_nested_asset %d %jd %f %f\n",
-__LINE__,
-*source_position,
-asset->frame_rate,
-edl->session->frame_rate);
- int64_t pos = *source_position;
- if(direction == PLAY_REVERSE && pos > 0) --pos;
- *source_position = Units::to_int64((double)pos *
- asset->frame_rate /
- edl->session->frame_rate);
-
- return asset;
- }
+ PlayableTracks playable_tracks(nested_edl,
+ *source_position, direction, TRACK_VIDEO, 1);
+ if( !playable_tracks.size() ) return 0;
+ VTrack *nested_track = (VTrack*)playable_tracks[0];
+ VEdit* nested_edit = (VEdit*)nested_track->edits->
+ editof(*source_position, direction, 1);
+ if( !nested_edit ) return 0;
+ return nested_edit->get_nested_asset(source_position,
+ *source_position, direction);