Read about our upcoming Code of Conduct on this issue

This instance will be upgraded to Heptapod 0.28.0 on 2022-01-18 at 14:00 UTC+1 (a few minutes of down time)

Commit b7e9be58 authored by Daniel Fort's avatar Daniel Fort
Browse files

lossless: support for 6D.116 (from pull request #875)

--HG--
branch : crop_rec_4k
parent 4ece0b09b64e
......@@ -21,6 +21,7 @@
#endif
static int is_5D3 = 0;
static int is_6D = 0;
static int is_basic = 0;
static CONFIG_INT("crop.preset", crop_preset_index, 0);
......@@ -347,7 +348,7 @@ static int FAST check_cmos_vidmode(uint16_t* data_buf)
}
}
if (is_basic)
if (is_basic && !is_6D)
{
if (reg == 7)
{
......@@ -524,7 +525,7 @@ static void FAST cmos_hook(uint32_t* regs, uint32_t* stack, uint32_t pc)
{
case CROP_PRESET_3x3_1X:
/* start/stop scanning line, very large increments */
cmos_new[7] = PACK12(6,29);
cmos_new[7] = (is_6D) ? PACK12(37,10) : PACK12(6,29);
break;
}
}
......@@ -1949,6 +1950,22 @@ static unsigned int crop_rec_init()
crop_rec_menu[0].help = crop_choices_help_basic;
crop_rec_menu[0].help2 = crop_choices_help2_basic;
}
else if (is_camera("6D", "1.1.6"))
{
CMOS_WRITE = 0x2420C;
MEM_CMOS_WRITE = 0xE92D41F0;
ADTG_WRITE = 0x24108;
MEM_ADTG_WRITE = 0xE92D41F0;
is_6D = 1;
is_basic = 1;
crop_presets = crop_presets_basic;
crop_rec_menu[0].choices = crop_choices_basic;
crop_rec_menu[0].max = COUNT(crop_choices_basic) - 1;
crop_rec_menu[0].help = crop_choices_help_basic;
crop_rec_menu[0].help2 = crop_choices_help2_basic;
}
menu_add("Movie", crop_rec_menu, COUNT(crop_rec_menu));
lvinfo_add_items (info_items, COUNT(info_items));
......
......@@ -160,6 +160,18 @@ int lossless_init()
TTL_Finish = (void *) 0xFF42C0A4; /* called next; calls UnlockEngineResources and returns output size from JpCoreCompleteCBR */
}
if (is_camera("6D", "1.1.6"))
{
/* ProcessTwoInTwoOutLosslessPath, 6D 1.1.6 */
TTL_SetArgs = (void *) 0xFF3491C8;
TTL_Prepare = (void *) 0xFF4129BC;
TTL_RegisterCBR = (void *) 0xFF411A44;
TTL_SetFlags = (void *) 0xFF359C78;
TTL_Start = (void *) 0xFF412A2C;
TTL_Stop = (void *) 0xFF412A64;
TTL_Finish = (void *) 0xFF412A9C;
}
lossless_sem = create_named_semaphore(0, 0);
......@@ -186,7 +198,7 @@ int lossless_init()
TTL_ResLock = CreateResLockEntry(resources, COUNT(resources));
}
else if (is_camera("5D3", "*"))
else if (is_camera("5D3", "*") || is_camera("6D", "*"))
{
uint32_t resources[] = {
0x00000 | edmac_channel_to_index(edmac_write_chan),
......@@ -475,6 +487,13 @@ static void decompress_init()
Cleanup_DecodeLosslessPath = (void *) 0xFF42F6F4;
}
if (is_camera("6D", "1.1.6"))
{
Setup_DecodeLosslessRawPath = (void *) 0xFF409218;
Start_DecodeLosslessPath = (void *) 0xFF4092E0;
Cleanup_DecodeLosslessPath = (void *) 0xFF409444;
}
/* all functions known? having the semaphore is an indicator we can decompress */
if (Setup_DecodeLosslessRawPath && Start_DecodeLosslessPath && Cleanup_DecodeLosslessPath)
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment